[Python-checkins] r51400 - python/trunk/Objects/classobject.c
neal.norwitz
python-checkins at python.org
Sat Aug 19 06:22:34 CEST 2006
Author: neal.norwitz
Date: Sat Aug 19 06:22:33 2006
New Revision: 51400
Modified:
python/trunk/Objects/classobject.c
Log:
Move initialization of interned strings to before allocating the
object so we don't leak op. (Fixes an earlier patch to this code)
Klockwork #350
Modified: python/trunk/Objects/classobject.c
==============================================================================
--- python/trunk/Objects/classobject.c (original)
+++ python/trunk/Objects/classobject.c Sat Aug 19 06:22:33 2006
@@ -91,8 +91,22 @@
}
Py_INCREF(bases);
}
+
+ if (getattrstr == NULL) {
+ getattrstr = PyString_InternFromString("__getattr__");
+ if (getattrstr == NULL)
+ goto alloc_error;
+ setattrstr = PyString_InternFromString("__setattr__");
+ if (setattrstr == NULL)
+ goto alloc_error;
+ delattrstr = PyString_InternFromString("__delattr__");
+ if (delattrstr == NULL)
+ goto alloc_error;
+ }
+
op = PyObject_GC_New(PyClassObject, &PyClass_Type);
if (op == NULL) {
+alloc_error:
Py_DECREF(bases);
return NULL;
}
@@ -101,17 +115,7 @@
op->cl_dict = dict;
Py_XINCREF(name);
op->cl_name = name;
- if (getattrstr == NULL) {
- getattrstr = PyString_InternFromString("__getattr__");
- if (getattrstr == NULL)
- return NULL;
- setattrstr = PyString_InternFromString("__setattr__");
- if (setattrstr == NULL)
- return NULL;
- delattrstr = PyString_InternFromString("__delattr__");
- if (delattrstr == NULL)
- return NULL;
- }
+
op->cl_getattr = class_lookup(op, getattrstr, &dummy);
op->cl_setattr = class_lookup(op, setattrstr, &dummy);
op->cl_delattr = class_lookup(op, delattrstr, &dummy);
More information about the Python-checkins
mailing list