From 4f3c5fb048666aeda7294cae8dabafa82f63f222 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Tue, 29 Jan 2013 17:55:39 +0000 Subject: (call_package_callback,rpmRunTransactions_callback) optimize: preextend stack if needed --- URPM.xs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/URPM.xs b/URPM.xs index e553153..624c6f1 100644 --- a/URPM.xs +++ b/URPM.xs @@ -994,8 +994,9 @@ call_package_callback(SV *urpm, SV *sv_pkg, SV *callback) { /* now, a callback will be called for sure */ dSP; PUSHMARK(SP); - XPUSHs(urpm); - XPUSHs(sv_pkg); + EXTEND(SP, 2); + PUSHs(urpm); + PUSHs(sv_pkg); PUTBACK; count = call_sv(callback, G_SCALAR); SPAGAIN; @@ -1279,13 +1280,14 @@ static void *rpmRunTransactions_callback(__attribute__((unused)) const void *h, ENTER; SAVETMPS; PUSHMARK(SP); - XPUSHs(td->data); - mXPUSHs(newSVpv(callback_type, 0)); - XPUSHs(pkgKey != NULL ? sv_2mortal(newSViv((long)pkgKey - 1)) : &PL_sv_undef); + EXTEND(SP, callback_subtype == NULL ? 2 : 5); + PUSHs(td->data); + mPUSHs(newSVpv(callback_type, 0)); + PUSHs(pkgKey != NULL ? sv_2mortal(newSViv((long)pkgKey - 1)) : &PL_sv_undef); if (callback_subtype != NULL) { - mXPUSHs(newSVpv(callback_subtype, 0)); - mXPUSHs(newSViv(amount)); - mXPUSHs(newSViv(total)); + mPUSHs(newSVpv(callback_subtype, 0)); + mPUSHs(newSViv(amount)); + mPUSHs(newSViv(total)); } PUTBACK; i = call_sv(callback, callback == td->callback_open ? G_SCALAR : G_DISCARD); -- cgit v1.2.1