Looking over __create_custom_diff_cmd() in ./subversion/libsvn_subr/io.c:

(1) The function doesn't strip double quotes, e.g.

_create_custom_diff_cmd(..., /* cmd= */ "duff \"quoted\"", pool)

will return the array { "duff", "\"quoted\"", NULL } 
You probably need to split cmd into tokens yourself  (instead of using

svn_cstring_split and then trying to fix up the result).


(2) 

  result = apr_palloc(pool, 
                      (words->nelts+1) * words->elt_size * sizeof(char *) )

Why is words->elt_size needed here - result is an array of char*?

(3) Lifetime issue:

      result[argv] = word->data;

word (and hence word->data) has been allocated in scratch_pool (which will be 
destroyed 
prior to return from __create_custom_diff_cmd), while result has been allocated 
in pool.


Cheers, Roderich

Reply via email to