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