Commit f16e05e7 authored by Jeremy Hylton's avatar Jeremy Hylton

Use PyOS_snprintf() at some cost even though it was correct before.

seterror() uses a char array and a pointer to the current position in
that array.  Use snprintf() and compute the amount of space left in
the buffer based on the current pointer position.
parent 5d3d134d
......@@ -224,26 +224,27 @@ seterror(int iarg, char *msg, int *levels, char *fname, char *message)
if (PyErr_Occurred())
return;
else if (message == NULL) {
/* XXX snprintf */
if (fname != NULL) {
sprintf(p, "%.200s() ", fname);
PyOS_snprintf(p, sizeof(buf), "%.200s() ", fname);
p += strlen(p);
}
if (iarg != 0) {
sprintf(p, "argument %d", iarg);
PyOS_snprintf(p, sizeof(buf) - (buf - p),
"argument %d", iarg);
i = 0;
p += strlen(p);
while (levels[i] > 0 && (int)(p-buf) < 220) {
sprintf(p, ", item %d", levels[i]-1);
PyOS_snprintf(p, sizeof(buf) - (buf - p),
", item %d", levels[i]-1);
p += strlen(p);
i++;
}
}
else {
sprintf(p, "argument");
PyOS_snprintf(p, sizeof(buf) - (buf - p), "argument");
p += strlen(p);
}
sprintf(p, " %.256s", msg);
PyOS_snprintf(p, sizeof(buf) - (buf - p), " %.256s", msg);
message = buf;
}
PyErr_SetString(PyExc_TypeError, message);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment