[BACK]Return to subst.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Diff for /OpenXM_contrib2/asir2000/builtin/subst.c between version 1.11 and 1.12

version 1.11, 2017/09/06 06:25:26 version 1.12, 2018/03/27 06:29:19
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/builtin/subst.c,v 1.10 2015/09/24 04:43:13 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/subst.c,v 1.11 2017/09/06 06:25:26 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 166  Obj *rp;
Line 166  Obj *rp;
         struct oNODE arg0;          struct oNODE arg0;
         MP m,mp,mp0;          MP m,mp,mp0;
         DP d;          DP d;
           VL lastvl,vl,tvl,prev,cur;
   
         if ( !arg ) {          if ( !arg ) {
                 *rp = 0; return;                  *rp = 0; return;
Line 175  Obj *rp;
Line 176  Obj *rp;
                 *rp = 0;                  *rp = 0;
                 return;                  return;
         }          }
           lastvl = LASTCO;
         switch ( OID(a) ) {          switch ( OID(a) ) {
                 case O_N: case O_P: case O_R:                  case O_N: case O_P: case O_R:
                         reductr(CO,(Obj)ARG0(arg),&a);                          reductr(CO,(Obj)ARG0(arg),&a);
Line 254  Obj *rp;
Line 256  Obj *rp;
                         break;                          break;
                 default:                  default:
                         error("subst : invalid argument");                          error("subst : invalid argument");
           }
           if ( lastvl != LASTCO ) {
                   get_vars_recursive(*rp,&vl);
                   prev = lastvl; cur = NEXT(prev);
                   while ( cur ) {
                           v = cur->v;
                           for ( tvl = vl; tvl && tvl->v != v; tvl = NEXT(tvl) );
                           if ( !tvl ) NEXT(prev) = NEXT(cur);
                           else prev = cur;
                           cur = NEXT(cur);
                   }
                   update_LASTCO();
         }          }
 }  }
   

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>