Enlightenment CVS committal Author : moom16 Project : e17 Module : proto
Dir : e17/proto/etk/src/lib Modified Files: etk_signal.c etk_signal_callback.c Log Message: * Fix the segvs on amd64!!! :) Thanks to buzzy and choichoi!! :) =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_signal.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- etk_signal.c 20 Nov 2005 10:33:28 -0000 1.3 +++ etk_signal.c 20 Nov 2005 13:35:41 -0000 1.4 @@ -324,11 +324,13 @@ Etk_Signal_Callback *callback; Etk_Bool return_value_set = FALSE; void *result = NULL; + va_list args2; if (!object || !signal) return; _etk_signal_stop_emission = FALSE; + va_copy(args2, args); /* We call the callbacks to call before the default handler */ callbacks = ecore_list_new(); @@ -338,12 +340,12 @@ { if (!return_value_set || !signal->accumulator) { - etk_signal_callback_call_valist(callback, object, return_value, args); + etk_signal_callback_call_valist(callback, object, return_value, args2); return_value_set = TRUE; } else { - etk_signal_callback_call_valist(callback, object, result, args); + etk_signal_callback_call_valist(callback, object, result, args2); signal->accumulator(return_value, result, signal->accum_data); } } @@ -362,12 +364,12 @@ { if (!return_value_set || !signal->accumulator) { - signal->marshaller(*default_handler, object, NULL, return_value, args); + signal->marshaller(*default_handler, object, NULL, return_value, args2); return_value_set = TRUE; } else { - signal->marshaller(*default_handler, object, NULL, result, args); + signal->marshaller(*default_handler, object, NULL, result, args2); signal->accumulator(return_value, result, signal->accum_data); } } @@ -384,16 +386,18 @@ { if (!return_value_set || !signal->accumulator) { - etk_signal_callback_call_valist(callback, object, return_value, args); + etk_signal_callback_call_valist(callback, object, return_value, args2); return_value_set = TRUE; } else { - etk_signal_callback_call_valist(callback, object, result, args); + etk_signal_callback_call_valist(callback, object, result, args2); signal->accumulator(return_value, result, signal->accum_data); } } ecore_list_destroy(callbacks); + + va_end(args2); } /** =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_signal_callback.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- etk_signal_callback.c 1 Oct 2005 16:29:45 -0000 1.1 +++ etk_signal_callback.c 20 Nov 2005 13:35:41 -0000 1.2 @@ -88,7 +88,13 @@ swapped_callback(callback->data); } else - marshaller(callback->callback, object, callback->data, return_value, args); + { + va_list args2; + + va_copy(args2, args); + marshaller(callback->callback, object, callback->data, return_value, args2); + va_end(args2); + } } /** @} */ ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs