pytdbpack_pack_data: Allow first argument to be any kind of Number,
authorMartin Pool <mbp@samba.org>
Tue, 5 Nov 2002 21:26:35 +0000 (21:26 +0000)
committerMartin Pool <mbp@samba.org>
Tue, 5 Nov 2002 21:26:35 +0000 (21:26 +0000)
not just an Integer.  Coerce appropriately.
(This used to be commit 248067931a2a8eeee86ea343bddf96d2bd727dbf)

source3/python/py_tdbpack.c

index 1b3cbbceea3ce170ffc3bb92c920fc8f39a4bee7..d29ada6741460bb15997c522e980cd90d4943b39 100644 (file)
@@ -661,14 +661,20 @@ pytdbpack_pack_data(const char *format_str,
                        long size;
                        char *sval;
 
-                       if (!PyInt_Check(val_obj)) {
-                               pytdbpack_bad_type(ch, "Integer", val_obj);
+                       if (!PyNumber_Check(val_obj)) {
+                               pytdbpack_bad_type(ch, "Number", val_obj);
                                return NULL;
                        }
 
-                       size = PyInt_AsLong(val_obj);
+                       if (!(val_obj = PyNumber_Long(val_obj)))
+                               return NULL;
+
+                       size = PyLong_AsLong(val_obj);
                        pack_uint32(size, &packed);
 
+                       /* Release the new reference created by the cast */
+                       Py_DECREF(val_obj);
+
                        val_obj = PySequence_GetItem(val_seq, val_i++);
                        if (!val_obj)
                                return NULL;