rem: memmove (parabuf, split_point->text, (size_t) (wptr - split_point->text));
add: memmove (parabuf, split_point->text, wptr - split_point->text);
context: flush_paragraph (void){  WORD *split_point;  register WORD *w;  int shift;  COST best_break;  /* In the special case where it's all one word, just flush it.  */  if (word_limit == word)    {      printf ("%*s", wptr - parabuf, parabuf);      wptr = parabuf;      return;    }  /* Otherwise:     - format what you have so far as a paragraph,     - find a low-cost line break near the end,     - output to there,     - make that the start of the paragraph.  */  fmt_paragraph ();  /* Choose a good split point.  */  split_point = word_limit;  best_break = MAXCOST;  for (w = word->next_break; w != word_limit; w = w->next_break)    {      if (w->best_cost - w->next_break->best_cost < best_break)	{	  split_point = w;	  best_break = w->best_cost - w->next_break->best_cost;	}      if (best_break <= MAXCOST - LINE_CREDIT)	best_break += LINE_CREDIT;    }  put_paragraph (split_point);  /* Copy text of words down to start of parabuf -- we use memmove because     the source and target may overlap.  */  memmove (parabuf, split_point->text, (size_t) (wptr - split_point->text));  shift = split_point->text - parabuf;  wptr -= shift;  /* Adjust text pointers.  */  for (w = split_point; w <= word_limit; w++)    w->text -= shift;  /* Copy words from split_point down to word -- we use memmove because     the source and target may overlap.  */  memmove ((char *) word, (char *) split_point,	 (word_limit - split_point + 1) * sizeof (WORD));  word_limit -= split_point - word;}