If `file_name' contained a quote then `cp' points to it, and remains
pointing to it if any of concat(), popen(3), or fgets(3) fail to give
the expected result. On returning, cp is not NULL and so strdup(cp) is
returned. Also, if fgets() fails on Cygwin in the way the comment
describes then cp is wrongly free(3)'d. (One of the problems with
generic variable names is their overloaded semantics cause faulty
re-use.) Fixes
b4f2851d and
0c50c669.
quotec = "\"";
}
+ cp = NULL;
if ((cmd = concat(proc, " ", quotec, file_name, quotec, NULL))) {
FILE *fp;