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[] = {