[Python-checkins] r50679 - python/trunk/Objects/complexobject.c

neal.norwitz python-checkins at python.org
Sun Jul 16 04:22:32 CEST 2006


Author: neal.norwitz
Date: Sun Jul 16 04:22:30 2006
New Revision: 50679

Modified:
   python/trunk/Objects/complexobject.c
Log:
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/trunk/Objects/complexobject.c
==============================================================================
--- python/trunk/Objects/complexobject.c	(original)
+++ python/trunk/Objects/complexobject.c	Sun Jul 16 04:22:30 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