comparison Python/errors.c @ 30683:3b59fa5d25b1 legacy-trunk

Simplify and speedup uses of Py_BuildValue(): * Py_BuildValue("(OOO)",a,b,c) --> PyTuple_Pack(3,a,b,c) * Py_BuildValue("()",a) --> PyTuple_New(0) * Py_BuildValue("O", a) --> Py_INCREF(a)
author Raymond Hettinger <python@rcn.com>
date Sun, 12 Oct 2003 19:09:37 +0000
parents 72cbc41ccc2f
children 74747f62f286
comparison
equal deleted inserted replaced
30682:473f4e2959a8 30683:3b59fa5d25b1
157 */ 157 */
158 if (!inclass || !PyClass_IsSubclass(inclass, type)) { 158 if (!inclass || !PyClass_IsSubclass(inclass, type)) {
159 PyObject *args, *res; 159 PyObject *args, *res;
160 160
161 if (value == Py_None) 161 if (value == Py_None)
162 args = Py_BuildValue("()"); 162 args = PyTuple_New(0);
163 else if (PyTuple_Check(value)) { 163 else if (PyTuple_Check(value)) {
164 Py_INCREF(value); 164 Py_INCREF(value);
165 args = value; 165 args = value;
166 } 166 }
167 else 167 else
168 args = Py_BuildValue("(O)", value); 168 args = PyTuple_Pack(1, value);
169 169
170 if (args == NULL) 170 if (args == NULL)
171 goto finally; 171 goto finally;
172 res = PyEval_CallObject(type, args); 172 res = PyEval_CallObject(type, args);
173 Py_DECREF(args); 173 Py_DECREF(args);
558 goto failure; 558 goto failure;
559 } 559 }
560 classname = PyString_FromString(dot+1); 560 classname = PyString_FromString(dot+1);
561 if (classname == NULL) 561 if (classname == NULL)
562 goto failure; 562 goto failure;
563 bases = Py_BuildValue("(O)", base); 563 bases = PyTuple_Pack(1, base);
564 if (bases == NULL) 564 if (bases == NULL)
565 goto failure; 565 goto failure;
566 result = PyClass_New(bases, dict, classname); 566 result = PyClass_New(bases, dict, classname);
567 failure: 567 failure:
568 Py_XDECREF(bases); 568 Py_XDECREF(bases);