From: [EMAIL PROTECTED] Operating system: N/A PHP version: 4.0.4pl1 PHP Bug Type: Unknown/Other Function Bug description: (8212) If the result of an exec() command is one character the result is empty. This is the solution to problem 8212 File: ext/standard/exec.c Function _Exec: Contains: RETVAL_STRINGL(buf,l?l+1:0,1); However, it should contain: RETVAL_STRINGL(buf,l?l+1:((isspace((int)buf[0]) || !buf[0])?0:1),1); The problem lies in code previous which reads: /* strip trailing spaces */ l = strlen(buf); t = l; while (l && isspace((int)buf[--l])); if (l < t) buf[l + 1] = '\0'; Obviously if the return value ends with the last line being a single character that DOES NOT end with a \n, then strlen(buf) = 1 and the variable l ends up as 0. The trim code leaves us in an ambiguous position after it is completed. The problem is that it operates under the assumption that we end with a newline character. This is not always the case. I suppose this is the problem with trying to trim whitespace in one line of code! The suggested codefix simply checks when l==0 if buf[0] was actually trimmable, if not, then we know we have to return exactly one character (instead of 0.) I have tested my solution and it seems to work. An alternate proposal would be to originally compute the trim in a more normal way: while (l && isspace((int)buf[l-1])) l--; But this affects more than one line of code. -- Edit Bug report at: http://bugs.php.net/?id=8962&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]