Blob Blame History Raw
Index: hunspell.c
===================================================================
--- hunspell.c	(revision 6)
+++ hunspell.c	(working copy)
@@ -54,7 +54,10 @@
 static PyObject *
 HunSpell_get_dic_encoding(HunSpell * self, PyObject *args)
 {
-	return Py_BuildValue("s", Hunspell_get_dic_encoding(self->handle));
+	char *retvalue;
+
+	retvalue = Hunspell_get_dic_encoding(self->handle);
+	return PyString_FromString(retvalue);
 }
 
 static PyObject *
@@ -75,17 +78,24 @@
 HunSpell_suggest(HunSpell * self, PyObject *args)
 {
 	char *word, **slist;
-	int i, num_slist;
-	PyObject *slist_list;
+	int i, num_slist, ret;
+	PyObject *slist_list, *pystr;
 
 	if (!PyArg_ParseTuple(args, "s", &word))
 		return NULL;
 
 	slist_list = PyList_New(0);
+	if (!slist_list) {
+		return NULL;
+	}
 	num_slist = Hunspell_suggest(self->handle, &slist, word);
 
-	for (i = 0; i < num_slist; i++) {
-		PyList_Append(slist_list, Py_BuildValue("s", slist[i]));
+	for (i = 0, ret = 0; !ret && i < num_slist; i++) {
+		pystr = PyString_FromString(slist[i]);
+		if (!pystr)
+			break;
+		ret = PyList_Append(slist_list, pystr);
+		Py_DECREF(pystr);
 	}
 
 	Hunspell_free_list(self->handle, &slist, num_slist);
@@ -96,17 +106,24 @@
 HunSpell_analyze(HunSpell * self, PyObject *args)
 {
 	char *word, **slist;
-	int i, num_slist;
-	PyObject *slist_list;
+	int i, num_slist, ret;
+	PyObject *slist_list, *pystr;
 
 	if (!PyArg_ParseTuple(args, "s", &word))
 		return NULL;
 
 	slist_list = PyList_New(0);
+	if (!slist_list) {
+		return NULL;
+	}
 	num_slist = Hunspell_analyze(self->handle, &slist, word);
 
-	for (i = 0; i < num_slist; i++) {
-		PyList_Append(slist_list, Py_BuildValue("s", slist[i]));
+	for (i = 0, ret = 0; !ret && i < num_slist; i++) {
+		pystr = PyString_FromString(slist[i]);
+		if (!pystr)
+			break;
+		ret = PyList_Append(slist_list, pystr);
+		Py_DECREF(pystr);
 	}
 
 	Hunspell_free_list(self->handle, &slist, num_slist);
@@ -117,17 +134,24 @@
 HunSpell_stem(HunSpell * self, PyObject *args)
 {
 	char *word, **slist;
-	int i, num_slist;
-	PyObject *slist_list;
+	int i, num_slist, ret;
+	PyObject *slist_list, *pystr;
 
 	if (!PyArg_ParseTuple(args, "s", &word))
 		return NULL;
 
 	slist_list = PyList_New(0);
+	if (!slist_list) {
+		return NULL;
+	}
 	num_slist = Hunspell_stem(self->handle, &slist, word);
 
-	for (i = 0; i < num_slist; i++) {
-		PyList_Append(slist_list, Py_BuildValue("s", slist[i]));
+	for (i = 0, ret = 0; !ret && i < num_slist; i++) {
+		pystr = PyString_FromString(slist[i]);
+		if (!pystr)
+			break;
+		ret = PyList_Append(slist_list, pystr);
+		Py_DECREF(pystr);
 	}
 
 	Hunspell_free_list(self->handle, &slist, num_slist);
@@ -138,17 +162,24 @@
 HunSpell_generate(HunSpell * self, PyObject *args)
 {
 	char *word1, *word2, **slist;
-	int i, num_slist;
-	PyObject *slist_list;
+	int i, num_slist, ret;
+	PyObject *slist_list, *pystr;
 
 	if (!PyArg_ParseTuple(args, "ss", &word1, &word2))
 		return NULL;
 
 	slist_list = PyList_New(0);
+	if (!slist_list) {
+		return NULL;
+	}
 	num_slist = Hunspell_generate(self->handle, &slist, word1, word2);
 
-	for (i = 0; i < num_slist; i++) {
-		PyList_Append(slist_list, Py_BuildValue("s", slist[i]));
+	for (i = 0, ret = 0; !ret && i < num_slist; i++) {
+		pystr = PyString_FromString(slist[i]);
+		if (!pystr)
+			break;
+		ret = PyList_Append(slist_list, pystr);
+		Py_DECREF(pystr);
 	}
 
 	Hunspell_free_list(self->handle, &slist, num_slist);
@@ -165,7 +196,7 @@
 		return NULL;
 	retvalue = Hunspell_add(self->handle, word);
 
-	return Py_BuildValue("i", retvalue);
+	return PyInt_FromLong(retvalue);
 }
 
 static PyObject *
@@ -178,7 +209,7 @@
 		return NULL;
 	retvalue = Hunspell_add_with_affix(self->handle, word, example);
 
-	return Py_BuildValue("i", retvalue);
+	return PyInt_FromLong(retvalue);
 }
 
 static PyObject *
@@ -191,7 +222,7 @@
 		return NULL;
 	retvalue = Hunspell_remove(self->handle, word);
 
-	return Py_BuildValue("i", retvalue);
+	return PyInt_FromLong(retvalue);
 }
 
 static PyMethodDef HunSpell_methods[] = {