CAVEATS
Some programs imprudently rely on code such as the following
sprintf(buf, "%s some further text", buf);
to append text to buf. However, the standards explicitly note that the
results are undefined if source and destination buffers overlap when
calling sprintf(), snprintf(), vsprintf(), and vsnprintf(). Depending
on the version of gcc(1) used, and the compiler options employed, calls
such as the above will not produce the expected results.
The glibc implementation of the functions snprintf() and vsnprintf()
conforms to the C99 standard, that is, behaves as described above,
since glibc 2.1. Until glibc 2.0.6, they would return -1 when the out‐
put was truncated.
1473: sprintf(reason,"%s %c", reason, branch_dir);
1475: sprintf(reason,"%s %c %f", reason, branch_dir,
1843: sprintf(reason,"%s %i", reason, node->bc_index+1);
1845: sprintf(reason, "%s %i", reason, node->parent->bc_index+1);
1860: sprintf(reason,"%s %c %s", reason, branch_dir, "\n");
1864: sprintf(reason, "%s %i", reason, node->bc_index+1);
1866: sprintf(reason,"%s %i", reason, node->parent->bc_index+1);
1880: sprintf(reason,"%s %c %s", reason, branch_dir, "\n");
1894: sprintf(reason,"%s %c %f\n", reason, branch_dir, tm->ub);
From
man sprintf:And here is what I see with
grep -n ', reason' tm_func.c | grep 'reason,'I catch this with
gcc -Wall