unpack() now returns a tuple, not a list
diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index 61122e4..eaeee50 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -317,6 +317,27 @@
}
+/* Helper to convert a list to a tuple */
+
+static object *
+totuple(list)
+ object *list;
+{
+ int len = getlistsize(list);
+ object *tuple = newtupleobject(len);
+ if (tuple != NULL) {
+ int i;
+ for (i = 0; i < len; i++) {
+ object *v = getlistitem(list, i);
+ INCREF(v);
+ settupleitem(tuple, i, v);
+ }
+ }
+ DECREF(list);
+ return tuple;
+}
+
+
/* unpack(fmt, string) --> (v1, v2, ...) */
static object *
@@ -409,13 +430,14 @@
}
}
- return res;
+ return totuple(res);
fail:
DECREF(res);
return NULL;
}
+
/* List of functions */
static struct methodlist struct_methods[] = {