libpurple/plugins/perl/perl-handlers.c

changeset 27120
d7503d775939
parent 25381
9a510397bf31
child 28740
6861934437a3
--- a/libpurple/plugins/perl/perl-handlers.c	Sat May 16 17:11:50 2009 +0000
+++ b/libpurple/plugins/perl/perl-handlers.c	Sat May 16 18:33:55 2009 +0000
@@ -284,6 +284,8 @@
 	DATATYPE **copy_args;
 
 	dSP;
+	PERL_SET_CONTEXT(my_perl);
+	SPAGAIN;
 	ENTER;
 	SAVETMPS;
 	PUSHMARK(sp);
@@ -364,7 +366,8 @@
 					break;
 
 				case PURPLE_TYPE_STRING:
-					if (strcmp(*((char **)copy_args[i]), SvPVX(sv_args[i]))) {
+					if (!*((char **)copy_args[i]) || !SvPVX(sv_args[i]) ||
+							strcmp(*((char **)copy_args[i]), SvPVX(sv_args[i]))) {
 						g_free(*((char **)copy_args[i]));
 						*((char **)copy_args[i]) =
 							g_strdup(SvPVutf8_nolen(sv_args[i]));

mercurial