]> granicus.if.org Git - python/commitdiff
repr's converted to using PyString_FromFormat() instead of sprintf'ing
authorBarry Warsaw <barry@python.org>
Fri, 24 Aug 2001 18:34:26 +0000 (18:34 +0000)
committerBarry Warsaw <barry@python.org>
Fri, 24 Aug 2001 18:34:26 +0000 (18:34 +0000)
into a hardcoded char* buffer.

Closes patch #454743.

Objects/bufferobject.c
Objects/cellobject.c
Objects/classobject.c
Objects/descrobject.c
Objects/fileobject.c
Objects/funcobject.c
Objects/methodobject.c
Objects/moduleobject.c
Objects/object.c
Objects/rangeobject.c
Objects/typeobject.c

index 4c213ce975c7e7dbbf0dbee869e2310f0c69b01e..242261f7187634366a47381b498dc5e14dda8da4 100644 (file)
@@ -184,28 +184,22 @@ buffer_compare(PyBufferObject *self, PyBufferObject *other)
 static PyObject *
 buffer_repr(PyBufferObject *self)
 {
-       char buf[300];
        char *status = self->b_readonly ? "read-only" : "read-write";
 
        if ( self->b_base == NULL )
-       {
-               sprintf(buf, "<%s buffer ptr %p, size %d at %p>",
-                       status,
-                       self->b_ptr,
-                       self->b_size,
-                       self);
-       }
+               return PyString_FromFormat("<%s buffer ptr %p, size %d at %p>",
+                                          status,
+                                          self->b_ptr,
+                                          self->b_size,
+                                          self);
        else
-       {
-               sprintf(buf, "<%s buffer for %p, ptr %p, size %d at %p>",
+               return PyString_FromFormat(
+                       "<%s buffer for %p, ptr %p, size %d at %p>",
                        status,
                        self->b_base,
                        self->b_ptr,
                        self->b_size,
                        self);
-       }
-
-       return PyString_FromString(buf);
 }
 
 static long
index 9a3677640228580f9b56dfaa7dc15c975e288d14..47e517446e047b764fd6be17e2092472871f83d9 100644 (file)
@@ -62,14 +62,12 @@ cell_compare(PyCellObject *a, PyCellObject *b)
 static PyObject *
 cell_repr(PyCellObject *op)
 {
-       char buf[256];
-
        if (op->ob_ref == NULL)
-               sprintf(buf, "<cell at %p: empty>", op);
-       else
-               sprintf(buf, "<cell at %p: %.80s object at %p>",
-                       op, op->ob_ref->ob_type->tp_name, op->ob_ref);
-       return PyString_FromString(buf);
+               return PyString_FromFormat("<cell at %p: empty>", op);
+
+       return PyString_FromFormat("<cell at %p: %.80s object at %p>",
+                                  op, op->ob_ref->ob_type->tp_name,
+                                  op->ob_ref);
 }
 
 static int
index 0f39d4ba6801664474a5e8523a66221322dff027..f1145a4ef5981b30edfb7296b434b55871f118d5 100644 (file)
@@ -313,19 +313,17 @@ static PyObject *
 class_repr(PyClassObject *op)
 {
        PyObject *mod = PyDict_GetItemString(op->cl_dict, "__module__");
-       char buf[140];
        char *name;
        if (op->cl_name == NULL || !PyString_Check(op->cl_name))
                name = "?";
        else
                name = PyString_AsString(op->cl_name);
        if (mod == NULL || !PyString_Check(mod))
-               sprintf(buf, "<class ?.%.100s at %p>", name, op);
+               return PyString_FromFormat("<class ?.s at %p>", name, op);
        else
-               sprintf(buf, "<class %.50s.%.50s at %p>",
-                       PyString_AsString(mod),
-                       name, op);
-       return PyString_FromString(buf);
+               return PyString_FromFormat("<class %s.%s at %p>",
+                                          PyString_AsString(mod),
+                                          name, op);
 }
 
 static PyObject *
@@ -776,7 +774,6 @@ instance_repr(PyInstanceObject *inst)
                reprstr = PyString_InternFromString("__repr__");
        func = instance_getattr(inst, reprstr);
        if (func == NULL) {
-               char buf[140];
                PyObject *classname = inst->in_class->cl_name;
                PyObject *mod = PyDict_GetItemString(
                        inst->in_class->cl_dict, "__module__");
@@ -787,13 +784,12 @@ instance_repr(PyInstanceObject *inst)
                        cname = "?";
                PyErr_Clear();
                if (mod == NULL || !PyString_Check(mod))
-                       sprintf(buf, "<?.%.100s instance at %p>",
-                               cname, inst);
+                       return PyString_FromFormat("<?.%s instance at %p>",
+                                                  cname, inst);
                else
-                       sprintf(buf, "<%.50s.%.50s instance at %p>",
-                               PyString_AsString(mod),
-                               cname, inst);
-               return PyString_FromString(buf);
+                       return PyString_FromFormat("<%s.%s instance at %p>",
+                                                  PyString_AsString(mod),
+                                                  cname, inst);
        }
        res = PyEval_CallObject(func, (PyObject *)NULL);
        Py_DECREF(func);
@@ -2042,7 +2038,6 @@ instancemethod_compare(PyMethodObject *a, PyMethodObject *b)
 static PyObject *
 instancemethod_repr(PyMethodObject *a)
 {
-       char buffer[240];
        PyObject *self = a->im_self;
        PyObject *func = a->im_func;
        PyObject *klass = a->im_class;
@@ -2072,8 +2067,8 @@ instancemethod_repr(PyMethodObject *a)
                        sklassname = PyString_AS_STRING(klassname);
        }
        if (self == NULL)
-               sprintf(buffer, "<unbound method %.100s.%.100s>",
-                       sklassname, sfuncname);
+               result = PyString_FromFormat("<unbound method %s.%s>",
+                                            sklassname, sfuncname);
        else {
                /* XXX Shouldn't use repr() here! */
                PyObject *selfrepr = PyObject_Repr(self);
@@ -2083,11 +2078,11 @@ instancemethod_repr(PyMethodObject *a)
                        Py_DECREF(selfrepr);
                        goto fail;
                }
-               sprintf(buffer, "<bound method %.60s.%.60s of %.60s>",
-                       sklassname, sfuncname, PyString_AS_STRING(selfrepr));
+               result = PyString_FromFormat("<bound method %s.%s of %s>",
+                                            sklassname, sfuncname,
+                                            PyString_AS_STRING(selfrepr));
                Py_DECREF(selfrepr);
        }
-       result = PyString_FromString(buffer);
   fail:
        Py_XDECREF(funcname);
        Py_XDECREF(klassname);
index efed1c02060c72804be1f140595bbb14dc6caf3c..44b20e275e750cb06b5cc8fc75d7d42148507fa5 100644 (file)
@@ -55,38 +55,36 @@ descr_name(PyDescrObject *descr)
 static PyObject *
 descr_repr(PyDescrObject *descr, char *format)
 {
-       char buffer[500];
-
-       sprintf(buffer, format, descr_name(descr), descr->d_type->tp_name);
-       return PyString_FromString(buffer);
+       return PyString_FromFormat(format, descr_name(descr),
+                                  descr->d_type->tp_name);
 }
 
 static PyObject *
 method_repr(PyMethodDescrObject *descr)
 {
        return descr_repr((PyDescrObject *)descr, 
-                         "<method '%.300s' of '%.100s' objects>");
+                         "<method '%s' of '%s' objects>");
 }
 
 static PyObject *
 member_repr(PyMemberDescrObject *descr)
 {
        return descr_repr((PyDescrObject *)descr, 
-                         "<member '%.300s' of '%.100s' objects>");
+                         "<member '%s' of '%s' objects>");
 }
 
 static PyObject *
 getset_repr(PyGetSetDescrObject *descr)
 {
        return descr_repr((PyDescrObject *)descr, 
-                         "<attribute '%.300s' of '%.100s' objects>");
+                         "<attribute '%s' of '%s' objects>");
 }
 
 static PyObject *
 wrapper_repr(PyWrapperDescrObject *descr)
 {
        return descr_repr((PyDescrObject *)descr, 
-                         "<slot wrapper '%.300s' of '%.100s' objects>");
+                         "<slot wrapper '%s' of '%s' objects>");
 }
 
 static int
@@ -100,8 +98,8 @@ descr_check(PyDescrObject *descr, PyObject *obj, PyTypeObject *type,
        }
        if (!PyObject_IsInstance(obj, (PyObject *)(descr->d_type))) {
                PyErr_Format(PyExc_TypeError,
-                            "descriptor '%.200s' for '%.100s' objects "
-                            "doesn't apply to '%.100s' object",
+                            "descriptor '%s' for '%s' objects "
+                            "doesn't apply to '%s' object",
                             descr_name((PyDescrObject *)descr),
                             descr->d_type->tp_name,
                             obj->ob_type->tp_name);
index 0bb2f252b2ce72e6deb714126ea32c4520b5fff7..e18e2a2387b14b0c7c1d71dc5df16992f1879690 100644 (file)
@@ -179,13 +179,11 @@ file_dealloc(PyFileObject *f)
 static PyObject *
 file_repr(PyFileObject *f)
 {
-       char buf[300];
-       sprintf(buf, "<%s file '%.256s', mode '%.10s' at %p>",
-               f->f_fp == NULL ? "closed" : "open",
-               PyString_AsString(f->f_name),
-               PyString_AsString(f->f_mode),
-               f);
-       return PyString_FromString(buf);
+       return PyString_FromFormat("<%s file '%s', mode '%s' at %p>",
+                                  f->f_fp == NULL ? "closed" : "open",
+                                  PyString_AsString(f->f_name),
+                                  PyString_AsString(f->f_mode),
+                                  f);
 }
 
 static PyObject *
index 6532e58c43e2fc2e5879ac1f1dccdc26275a9974..6f56bf6056ed84141511c026dd0c459445a4d228 100644 (file)
@@ -239,14 +239,11 @@ func_dealloc(PyFunctionObject *op)
 static PyObject*
 func_repr(PyFunctionObject *op)
 {
-       char buf[140];
        if (op->func_name == Py_None)
-               sprintf(buf, "<anonymous function at %p>", op);
-       else
-               sprintf(buf, "<function %.100s at %p>",
-                       PyString_AsString(op->func_name),
-                       op);
-       return PyString_FromString(buf);
+               return PyString_FromFormat("<anonymous function at %p>", op);
+       return PyString_FromFormat("<function %s at %p>",
+                                  PyString_AsString(op->func_name),
+                                  op);
 }
 
 static int
index cdba3505f9b0426e4accf85ca7c083b537595e7e..e766ba5e89fd882e2e324a29dfdca390fbe8a8d3 100644 (file)
@@ -172,15 +172,13 @@ static struct getsetlist meth_getsets [] = {
 static PyObject *
 meth_repr(PyCFunctionObject *m)
 {
-       char buf[200];
        if (m->m_self == NULL)
-               sprintf(buf, "<built-in function %.80s>", m->m_ml->ml_name);
-       else
-               sprintf(buf,
-                       "<built-in method %.80s of %.80s object at %p>",
-                       m->m_ml->ml_name, m->m_self->ob_type->tp_name,
-                       m->m_self);
-       return PyString_FromString(buf);
+               return PyString_FromFormat("<built-in function %s>",
+                                          m->m_ml->ml_name);
+       return PyString_FromFormat("<built-in method %s of %s object at %p>",
+                                  m->m_ml->ml_name,
+                                  m->m_self->ob_type->tp_name,
+                                  m->m_self);
 }
 
 static int
index 2ccf0bfd9dd9e2e92c7e7055a3c98a095991e845..ba81593a6dc8a8deac5bddfb49a8f6994c1203bc 100644 (file)
@@ -157,13 +157,8 @@ module_dealloc(PyModuleObject *m)
 static PyObject *
 module_repr(PyModuleObject *m)
 {
-       static int template1len = sizeof("<module '' (built-in)>") + 1;
-       static int template2len = sizeof("<module '' from ''>") + 1;
-
-       char *buf;
        char *name;
        char *filename;
-       PyObject *rtn;
 
        name = PyModule_GetName((PyObject *)m);
        if (name == NULL) {
@@ -173,19 +168,9 @@ module_repr(PyModuleObject *m)
        filename = PyModule_GetFilename((PyObject *)m);
        if (filename == NULL) {
                PyErr_Clear();
-               buf = PyObject_MALLOC(
-                       sizeof(char) * (strlen(name) + template1len));
-               sprintf(buf, "<module '%s' (built-in)>", name);
-       }
-       else {
-               buf = PyObject_MALLOC(
-                       sizeof(char) * (strlen(name) + strlen(filename) +
-                                       template2len));
-               sprintf(buf, "<module '%s' from '%s'>", name, filename);
+               return PyString_FromFormat("<module '%s' (built-in)>", name);
        }
-       rtn = PyString_FromString(buf);
-       PyObject_FREE(buf);
-       return rtn;
+       return PyString_FromFormat("<module '%s' from '%s'>", name, filename);
 }
 
 /* We only need a traverse function, no clear function: If the module
index 7e4a211c0d84016688a6cf7cba0e746928f8dc95..1d626904b189133256ae15a0d67675afffe76b6a 100644 (file)
@@ -222,6 +222,7 @@ void _PyGC_Dump(PyGC_Head* op)
 }
 #endif /* WITH_CYCLE_GC */
 
+
 PyObject *
 PyObject_Repr(PyObject *v)
 {
@@ -235,12 +236,9 @@ PyObject_Repr(PyObject *v)
 #endif
        if (v == NULL)
                return PyString_FromString("<NULL>");
-       else if (v->ob_type->tp_repr == NULL) {
-               char buf[120];
-               sprintf(buf, "<%.80s object at %p>",
-                       v->ob_type->tp_name, v);
-               return PyString_FromString(buf);
-       }
+       else if (v->ob_type->tp_repr == NULL)
+               return PyString_FromFormat("<%s object at %p",
+                                          v->ob_type->tp_name, v);
        else {
                PyObject *res;
                res = (*v->ob_type->tp_repr)(v);
index 5ad86eddc1d6384046d0322587c2795c8882ab3f..24765f4dec77d36ad774b69652ead41962337333 100644 (file)
@@ -126,30 +126,30 @@ range_length(rangeobject *r)
 static PyObject *
 range_repr(rangeobject *r)
 {
-       /* buffers must be big enough to hold 3 longs + an int +
-        * a bit of "(xrange(...) * ...)" text.
-        */
-       char buf1[250];
-       char buf2[250];
-
+       PyObject *rtn;
+       
        if (r->start == 0 && r->step == 1)
-               sprintf(buf1, "xrange(%ld)", r->start + r->len * r->step);
+               rtn = PyString_FromFormat("xrange(%ld)",
+                                         r->start + r->len * r->step);
 
        else if (r->step == 1)
-               sprintf(buf1, "xrange(%ld, %ld)",
-                       r->start,
-                       r->start + r->len * r->step);
+               rtn = PyString_FromFormat("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)
-               sprintf(buf2, "(%s * %d)", buf1, r->reps);
-
-       return PyString_FromString(r->reps == 1 ? buf1 : buf2);
+               rtn = PyString_FromFormat("xrange(%ld, %ld, %ld)",
+                                         r->start,
+                                         r->start + r->len * r->step,
+                                         r->step);
+       if (r->reps != 1) {
+               PyObject *extra = PyString_FromFormat(
+                       "(%s * %d)",
+                       PyString_AS_STRING(rtn), r->reps);
+               Py_DECREF(rtn);
+               rtn = extra;
+       }
+       return rtn;
 }
 
 static PyObject *
index bf2bdc042d52d27009dfa1a4a62cbc55a68e919b..5cc4161dea228d664e78cc971b4553ad765e7f1a 100644 (file)
@@ -113,8 +113,7 @@ type_compare(PyObject *v, PyObject *w)
 static PyObject *
 type_repr(PyTypeObject *type)
 {
-       PyObject *mod, *name;
-       char buf[200];
+       PyObject *mod, *name, *rtn;
 
        mod = type_module(type, NULL);
        if (mod == NULL)
@@ -126,15 +125,18 @@ type_repr(PyTypeObject *type)
        name = type_name(type, NULL);
        if (name == NULL)
                return NULL;
-       if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__"))
-               sprintf(buf, "<type '%.80s.%.80s'>",
-                       PyString_AS_STRING(mod),
-                       PyString_AS_STRING(name));
+
+       if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__")) {
+               rtn = PyString_FromFormat("<type '%s.%s'>",
+                                         PyString_AS_STRING(mod),
+                                         PyString_AS_STRING(name));
+       }
        else
-               sprintf(buf, "<type '%.80s'>", type->tp_name);
+               rtn = PyString_FromFormat("<type '%s'>", type->tp_name);
+
        Py_XDECREF(mod);
        Py_DECREF(name);
-       return PyString_FromString(buf);
+       return rtn;
 }
 
 static PyObject *
@@ -968,8 +970,7 @@ static PyObject *
 object_repr(PyObject *self)
 {
        PyTypeObject *type;
-       PyObject *mod, *name;
-       char buf[200];
+       PyObject *mod, *name, *rtn;
 
        type = self->ob_type;
        mod = type_module(type, NULL);
@@ -983,15 +984,16 @@ object_repr(PyObject *self)
        if (name == NULL)
                return NULL;
        if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__"))
-               sprintf(buf, "<%.80s.%.80s instance at %p>",
-                       PyString_AS_STRING(mod),
-                       PyString_AS_STRING(name),
-                       self);
+               rtn = PyString_FromFormat("<%s.%s instance at %p>",
+                                         PyString_AS_STRING(mod),
+                                         PyString_AS_STRING(name),
+                                         self);
        else
-               sprintf(buf, "<%.80s instance at %p>", type->tp_name, self);
+               rtn = PyString_FromFormat("<%s instance at %p>",
+                                         type->tp_name, self);
        Py_XDECREF(mod);
        Py_DECREF(name);
-       return PyString_FromString(buf);
+       return rtn;
 }
 
 static PyObject *
@@ -2590,13 +2592,9 @@ slot_tp_repr(PyObject *self)
                Py_DECREF(func);
                return res;
        }
-       else {
-               char buf[120];
-               PyErr_Clear();
-               sprintf(buf, "<%.80s object at %p>",
-                       self->ob_type->tp_name, self);
-               return PyString_FromString(buf);
-       }
+       PyErr_Clear();
+       return PyString_FromFormat("<%s object at %p>",
+                                  self->ob_type->tp_name, self);
 }
 
 static PyObject *