Added some error checks.
diff --git a/Modules/almodule.c b/Modules/almodule.c
index fad510d..806ad75 100644
--- a/Modules/almodule.c
+++ b/Modules/almodule.c
@@ -423,8 +423,13 @@
 	object *name, *dir;
 	ALport port;
 	ALconfig config = NULL;
-	int size = gettuplesize(args);
+	int size;
 
+	if (args == NULL || !is_tupleobject(args)) {
+		err_badarg();
+		return NULL;
+	}
+	size = gettuplesize(args);
 	if (size == 2) {
 		if (!getstrstrarg (args, &name, &dir))
 			return NULL;
@@ -440,6 +445,11 @@
 
 	port = ALopenport(getstringvalue(name), getstringvalue(dir), config);
 
+	if (port == NULL) {
+		err_errno(RuntimeError);
+		return NULL;
+	}
+
 	return newportobject (port);
 }
 
@@ -452,6 +462,10 @@
 	if (!getnoarg (args)) return NULL;
 
 	config = ALnewconfig ();
+	if (config == NULL) {
+		err_errno(RuntimeError);
+		return NULL;
+	}
 
 	return newconfigobject (config);
 }
@@ -523,6 +537,8 @@
 			setlistitem(list, i, newintobject(PVbuffer[i]));
 	}
 
+	DEL(PVbuffer);
+
 	INCREF(None);
 	return None;
 }