]> granicus.if.org Git - python/commitdiff
Boost buffer sizes in the absence of snprintf on Windows.
authorTim Peters <tim.peters@gmail.com>
Fri, 4 Aug 2000 03:05:40 +0000 (03:05 +0000)
committerTim Peters <tim.peters@gmail.com>
Fri, 4 Aug 2000 03:05:40 +0000 (03:05 +0000)
Ensure that # of args to sprintf always matches # of format specifiers.

Objects/rangeobject.c

index 8c208e9f390a6dd15f8a62eae205eadb3d93abd9..20b077f4f9e69e8636ae54b06bbe312abed935b7 100644 (file)
@@ -61,24 +61,29 @@ range_length(rangeobject *r)
 static PyObject *
 range_repr(rangeobject *r)
 {
-       char buf1[80];
-       char buf2[80];
+       /* buffers must be big enough to hold 3 longs + an int +
+        * a bit of "(xrange(...) * ...)" text.
+        */
+       char buf1[250];
+       char buf2[250];
 
-       if (r->start == 0 && r->step == 1) {
+       if (r->start == 0 && r->step == 1)
                sprintf(buf1, "xrange(%ld)", r->start + r->len * r->step);
-       }
-       else {
-               char *fmt = "xrange(%ld, %ld, %ld)";
-               if (r->step == 1)
-                       fmt = "xrange(%ld, %ld)";
-               sprintf(buf1, fmt,
+
+       else if (r->step == 1)
+               sprintf(buf1, "xrange(%ld, %ld)",
+                       r->start,
+                       r->start + r->len * r->step);
+
+       else
+               sprintf(buf1, "xrange(%ld, %ld, %ld)",
                        r->start,
                        r->start + r->len * r->step,
                        r->step);
-       }
-       if (r->reps != 1) {
+
+       if (r->reps != 1)
                sprintf(buf2, "(%s * %d)", buf1, r->reps);
-       }
+
        return PyString_FromString(r->reps == 1 ? buf1 : buf2);
 }
 
@@ -193,10 +198,10 @@ static int
 range_contains(rangeobject *r, PyObject *obj)
 {
        long num = PyInt_AsLong(obj);
-       
+
        if (num < 0 && PyErr_Occurred())
                return -1;
-       
+
        if (num < r->start || (num - r->start) % r->step)
                return 0;
        if (num > (r->start + (r->len * r->step)))