瀏覽代碼

drose: prevent crash

Asad M. Zaman 21 年之前
父節點
當前提交
e58313c806
共有 1 個文件被更改,包括 6 次插入4 次删除
  1. 6 4
      direct/src/dcparser/dcPacker.cxx

+ 6 - 4
direct/src/dcparser/dcPacker.cxx

@@ -755,8 +755,12 @@ pack_object(PyObject *object) {
       int size = PySequence_Size(object);
       for (int i = 0; i < size; i++) {
         PyObject *element = PySequence_GetItem(object, i);
-        pack_object(element);
-        Py_DECREF(element);
+        if (element != (PyObject *)NULL) {
+          pack_object(element);
+          Py_DECREF(element);
+        } else {
+          cerr << "Unable to extract item " << i << " from sequence.\n";
+        }
       }
       pop();
 
@@ -1166,8 +1170,6 @@ clear_stack() {
 ////////////////////////////////////////////////////////////////////
 void DCPacker::
 pack_class_object(const DCClass *dclass, PyObject *object) {
-  PyObject *str = PyObject_Str(object);
-  Py_DECREF(str);
   push();
   while (more_nested_fields() && !_pack_error) {
     const DCField *field = get_current_field()->as_field();