[Python-checkins] r52193 - python/branches/release24-maint/Objects/complexobject.c
andrew.kuchling
python-checkins at python.org
Thu Oct 5 21:42:49 CEST 2006
Author: andrew.kuchling
Date: Thu Oct 5 21:42:49 2006
New Revision: 52193
Modified:
python/branches/release24-maint/Objects/complexobject.c
Log:
[Backport r50679 | neal.norwitz. This is the last Klocwork bug to be
backported.]
Use sizeof(buffer) instead of duplicating the constants to ensure they won't
be wrong.
The real change is to pass (bufsz - 1) to PyOS_ascii_formatd and 1
to strncat. strncat copies n+1 bytes from src (not dest).
Reported by Klocwork #58.
Modified: python/branches/release24-maint/Objects/complexobject.c
==============================================================================
--- python/branches/release24-maint/Objects/complexobject.c (original)
+++ python/branches/release24-maint/Objects/complexobject.c Thu Oct 5 21:42:49 2006
@@ -274,16 +274,16 @@
{
char format[32];
if (v->cval.real == 0.) {
- PyOS_snprintf(format, 32, "%%.%ig", precision);
- PyOS_ascii_formatd(buf, bufsz, format, v->cval.imag);
- strncat(buf, "j", bufsz);
+ PyOS_snprintf(format, sizeof(format), "%%.%ig", precision);
+ PyOS_ascii_formatd(buf, bufsz - 1, format, v->cval.imag);
+ strncat(buf, "j", 1);
} else {
char re[64], im[64];
/* Format imaginary part with sign, real part without */
- PyOS_snprintf(format, 32, "%%.%ig", precision);
- PyOS_ascii_formatd(re, 64, format, v->cval.real);
- PyOS_snprintf(format, 32, "%%+.%ig", precision);
- PyOS_ascii_formatd(im, 64, format, v->cval.imag);
+ PyOS_snprintf(format, sizeof(format), "%%.%ig", precision);
+ PyOS_ascii_formatd(re, sizeof(re), format, v->cval.real);
+ PyOS_snprintf(format, sizeof(format), "%%+.%ig", precision);
+ PyOS_ascii_formatd(im, sizeof(im), format, v->cval.imag);
PyOS_snprintf(buf, bufsz, "(%s%sj)", re, im);
}
}
More information about the Python-checkins
mailing list