Changeset 4834


Ignore:
Timestamp:
11/19/03 13:51:21 (18 years ago)
Author:
piso
Message:

PROGV

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/SpecialOperators.java

    r4832 r4834  
    33 *
    44 * Copyright (C) 2003 Peter Graves
    5  * $Id: SpecialOperators.java,v 1.15 2003-11-19 02:44:16 piso Exp $
     5 * $Id: SpecialOperators.java,v 1.16 2003-11-19 13:51:21 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    327327            final LispObject symbols = checkList(eval(args.car(), env, thread));
    328328            LispObject values = checkList(eval(args.cadr(), env, thread));
    329             // Save current values of symbols.
    330             final LispObject[] oldValues = new LispObject[symbols.length()];
    331             int i = 0;
    332             for (LispObject list = symbols; list != NIL; list = list.cdr()) {
    333                 LispObject symbol = list.car();
    334                 oldValues[i++] = symbol.getSymbolValue();
    335             }
    336329            Environment oldDynEnv = thread.getDynamicEnvironment();
    337330            try {
     
    345338                    } else
    346339                        value = null;
    347                     if (symbol.isSpecialVariable())
    348                         thread.bindSpecial(symbol, value);
    349                     else
    350                         symbol.setSymbolValue(value);
     340                    thread.bindSpecial(symbol, value);
    351341                }
    352342                // Implicit PROGN.
     
    361351            finally {
    362352                thread.setDynamicEnvironment(oldDynEnv);
    363                 // Undo bindings.
    364                 i = 0;
    365                 for (LispObject list = symbols; list != NIL; list = list.cdr()) {
    366                     Symbol symbol = (Symbol) list.car();
    367                     symbol.setSymbolValue(oldValues[i]);
    368                 }
    369353            }
    370354        }
Note: See TracChangeset for help on using the changeset viewer.