[Pidgin] #15167: purple_core_get_ui() and purple_core_get_version() returns nonsense on 64b
Pidgin
trac at pidgin.im
Thu Jun 14 18:11:26 EDT 2012
#15167: purple_core_get_ui() and purple_core_get_version() returns nonsense on 64b
-------------------+--------------------------------------------------------
Reporter: harvie | Type: defect
Status: new | Component: libpurple
Version: 2.10.4 | Keywords: amd64 x86-64 64b libpurple
-------------------+--------------------------------------------------------
Hi.
I am author of answerscripts plugin and i my users reported issues with
libpurple/pidgin on 64b.
https://github.com/Harvie/libpurple-core-
answerscripts/blob/master/answerscripts.c
Here is the code that crashes and therefore i had to disable it on x86_64:
{{{
#ifndef __x86_64__ //Workaround for x86_64 (where this causes
problems pro unknown reason)
const char * core_ui = purple_core_get_ui() != 0 ? (const
char *) purple_core_get_ui() : "";
const char * core_version = purple_core_get_version() != 0
? (const char *) purple_core_get_version() : "";
setenv(ENV_PREFIX "L_AGENT", (char *) core_ui, 1);
//ID of IM client used with answerscripts
setenv(ENV_PREFIX "L_AGENT_VERSION", (char *)
core_version, 1); //Version of client
#endif
}}}
I don't know why but purple_core_get_ui() and purple_core_get_version()
just returns invalid non-NULL pointer that makes pidgin SEGV when trying
to read it...
BTW i have similar problems with some other functions (in this case even
on 32b) which are returning valid pointers to some binary mess instead of
null pointers when property is unset. I am not sure which functions are
affected right now, but all of them were related to user nicknames, names,
aliases and other similar stuff made to identify remote and local users.
Like this:
{{{
//Get buddy alias
const char* remote_alias = purple_buddy_get_alias(buddy);
if(remote_alias == NULL) remote_alias = "";
}}}
never returns NULL even if alias is unset... returns pointer to crap
instead... but it's not so crucial as i don't have any frequent crashes
caused by this... just mess in output in some cases...
--
Ticket URL: <http://developer.pidgin.im/ticket/15167>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list