gpgscm: Re-enable the garbage collector in case of errors.
authorJustus Winter <justus@g10code.com>
Thu, 17 Nov 2016 10:58:34 +0000 (11:58 +0100)
committerJustus Winter <justus@g10code.com>
Thu, 17 Nov 2016 12:25:14 +0000 (13:25 +0100)
* tests/gpgscm/scheme.c (opexe_0): Enable gc before calling 'Error_1'.

Fixes-commit: 83c184a66b73f312425b01008f0495610e5329a4
Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/scheme.c

index fe8b9dd..ee8992e 100644 (file)
@@ -709,7 +709,8 @@ gc_reservation_failure(struct scheme *sc)
 
 /* Disable the garbage collection and reserve the given number of
  * cells.  gc_disable may be nested, but the enclosing reservation
- * must include the reservations of all nested calls.  */
+ * must include the reservations of all nested calls.  Note: You must
+ * re-enable the gc before calling Error_X.  */
 static void
 _gc_disable(struct scheme *sc, size_t reserve, int lineno)
 {
@@ -3013,6 +3014,7 @@ static pointer opexe_0(scheme *sc, enum scheme_opcodes op) {
           sc->args = cons(sc, sc->value, sc->args);
           if (is_pair(sc->code)) { /* continue */
                if (!is_pair(car(sc->code)) || !is_pair(cdar(sc->code))) {
+                   gc_enable(sc);
                     Error_1(sc, "Bad syntax of binding spec in let :",
                             car(sc->code));
                }