On 2016-08-29 18:30, Ganesh Pal wrote:
 Hello Team ,

I need you input on the below  hello world program.  I a m trying to add a
python binding which will return the character for the given index .  I am
on Python 2.7   and linux

Example :
string ='helloworld'
dda_hello(5)
'w'


 /*
+ * Hello world example for python bindings
+ */
+
+static char* string = "helloworld";
+char dda_hello(int i)
+     {
+      return string[i];
+     }
+
+static PyObject *
+py_dda_hello(PyObject *self, PyObject *args )
+{
+       int index;
+       char char1;
+       if (!PyArg_ParseTuple(args, "i", &index))
+               return NULL;
+       char1 = dda_hello(index);

This bit is wrong:

+       return Py_BuildValue("s",char1);

The format "s" is for a null-terminated C string (char *), but you're giving it a C int.

The format you should be using is "c" (C int representing a character).

+}
+
+/*

@@ -1674,6 +1705,10 @@ PyMethodDef xyz_methods[] = {
+        {"dda_hello", py_dda_hello, METH_VARARGS,
+                "Returns the character entered for a given index"},


 import as.ds.dss as daa
print dda.dda_hello(1)
zsh: segmentation fault (core dumped)  python

Apologies for posting the diff  , I didn't find a better way

It would be a good idea to check the index and raise an exception if it's out the bounds.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to