Allocate new strings as return values from text interface From: Daniel Drake Like most GTK+ functions which return strings, users are expected to free the return value from function calls such as atk_text_get_text(). The current functions are just returning the result of PyString_AsString but the docs make it pretty clear that this refers to an internal buffer which should not be touched. Index: papi-0.0.3/src/papi_atktextiface.c =================================================================== --- papi-0.0.3.orig/src/papi_atktextiface.c +++ papi-0.0.3/src/papi_atktextiface.c @@ -309,7 +309,7 @@ _text_get_text (AtkText *text, gint star retval = PyString_AsString (result); Py_DECREF (result); - return retval; + return g_strdup (retval); } /** @@ -358,7 +358,7 @@ _text_get_text_after_offset (AtkText *te retval = PyString_AsString (result); Py_DECREF (result); - return retval; + return g_strdup (retval); } /** @@ -383,7 +383,7 @@ _text_get_text_at_offset (AtkText *text, retval = PyString_AsString (result); Py_DECREF (result); - return retval; + return g_strdup (retval); } /** @@ -409,7 +409,7 @@ _text_get_text_before_offset (AtkText *t retval = PyString_AsString (result); Py_DECREF (result); - return retval; + return g_strdup (retval); } /** @@ -693,7 +693,7 @@ _text_get_selection (AtkText *text, gint Py_DECREF (val); } Py_DECREF (result); - return retval; + return g_strdup (retval); } /**