[gimp/gimp-2-6] Applied changes from CVS version 1.23 of official version of TinyScheme. Fixed potential problem of



commit d06a4ee4c37912557fce5a7e2e24b8015c6ccf9b
Author: Kevin Cozens <kcozens cvs gnome org>
Date:   Thu Sep 16 15:01:11 2010 -0400

    Applied changes from CVS version 1.23 of official version of TinyScheme.
    Fixed potential problem of arglist to foreign calls being wrongly GC'ed.
    (Cherry pick of commit 6a3a7befcf7ab4954d62f96263c6d9b3d8f88c9d)

 plug-ins/script-fu/tinyscheme/scheme.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/plug-ins/script-fu/tinyscheme/scheme.c b/plug-ins/script-fu/tinyscheme/scheme.c
index 457ca28..4755993 100644
--- a/plug-ins/script-fu/tinyscheme/scheme.c
+++ b/plug-ins/script-fu/tinyscheme/scheme.c
@@ -2660,7 +2660,10 @@ static pointer opexe_0(scheme *sc, enum scheme_opcodes op) {
 #endif
           if (is_proc(sc->code)) {
                s_goto(sc,procnum(sc->code));   /* PROCEDURE */
-          } else if (is_foreign(sc->code)) {
+          } else if (is_foreign(sc->code))
+          {
+               /* Keep nested calls from GC'ing the arglist */
+               push_recent_alloc(sc,sc->args,sc->NIL);
                sc->foreign_error = sc->NIL;
                x=sc->code->_object._ff(sc,sc->args);
                if (sc->foreign_error == sc->NIL) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]