rem: if (dst_path == NULL || src_path == NULL) xalloc_die ();  ret |= copy_internal (src_path, dst_path, new_dst, src_sb->st_dev, ancestors, &non_command_line_options, 0, &local_copy_into_self, NULL);
add: ok &= copy_internal (src_path, dst_path, new_dst, src_sb->st_dev, ancestors, &non_command_line_options, false, &local_copy_into_self, NULL);
context: copy_dir (const char *src_path_in, const char *dst_path_in, int new_dst,	  const struct stat *src_sb, struct dir_list *ancestors,	  const struct cp_options *x, int *copy_into_self){  char *name_space;  char *namep;  struct cp_options non_command_line_options = *x;  int ret = 0;  name_space = savedir (src_path_in);  if (name_space == NULL)    {      /* This diagnostic is a bit vague because savedir can fail in         several different ways.  */      error (0, errno, _("cannot access %s"), quote (src_path_in));      return -1;    }  if (x->ignore_attributes == 0  	&& copy_attributes_by_name(src_path_in, dst_path_in, true) != 0)    fprintf(stderr, "%s: could not copy attributes\n", src_path_in);  /* For cp's -H option, dereference command line arguments, but do not     dereference symlinks that are found via recursive traversal.  */  if (x->dereference == DEREF_COMMAND_LINE_ARGUMENTS)    non_command_line_options.xstat = lstat;  namep = name_space;  while (*namep != '\0')    {      int local_copy_into_self;      char *src_path = path_concat (src_path_in, namep, NULL);      char *dst_path = path_concat (dst_path_in, namep, NULL);      if (dst_path == NULL || src_path == NULL)	xalloc_die ();      ret |= copy_internal (src_path, dst_path, new_dst, src_sb->st_dev,			    ancestors, &non_command_line_options, 0,			    &local_copy_into_self, NULL);      *copy_into_self |= local_copy_into_self;      free (dst_path);      free (src_path);      namep += strlen (namep) + 1;    }  free (name_space);  return -ret;}