=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/util.c,v retrieving revision 1.5 retrieving revision 1.10 diff -u -p -r1.5 -r1.10 --- OpenXM_contrib2/asir2000/parse/util.c 2000/12/05 01:24:57 1.5 +++ OpenXM_contrib2/asir2000/parse/util.c 2003/08/23 01:42:53 1.10 @@ -45,12 +45,12 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/util.c,v 1.4 2000/11/08 08:02:52 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/util.c,v 1.9 2003/08/21 08:05:02 saito Exp $ */ #include "ca.h" #include "base.h" #include "parse.h" -#if defined(VISUAL) +#if defined(__GNUC__) || defined(VISUAL) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__) #include #else #include @@ -121,7 +121,7 @@ NODE ind; pointer *vp; { Obj len,row,col; - int i,l; + int i; NODE n,n0; VECT v; Q q; @@ -169,13 +169,13 @@ pointer *vp; break; case O_LIST: n0 = BDY((LIST)a); i = QTOS((Q)BDY(ind)); - for ( l = 0, n = n0; n; n = NEXT(n), l++ ); - if ( i < 0 || i >= l ) + if ( i < 0 ) error("getarray : Out of range"); - else { - for ( n = n0, l = 0; l < i; l++, n = NEXT(n) ); + for ( n = n0; i > 0 && n; n = NEXT(n), i-- ); + if ( i || !n ) + error("getarray : Out of range"); + else a = (pointer)BDY(n); - } break; default: error("getarray : array or list expected"); @@ -191,7 +191,7 @@ NODE ind; pointer b; { Obj len,row,col; - int i,l; + int i; NODE n,n0; if ( a && OID(a) == O_BYTEARRAY ) { @@ -236,13 +236,13 @@ pointer b; case O_LIST: if ( NEXT(ind) ) { n0 = BDY((LIST)a); i = QTOS((Q)BDY(ind)); - for ( l = 0, n = n0; n; n = NEXT(n), l++ ); - if ( i < 0 || i >= l ) + if ( i < 0 ) error("putarray : Out of range"); - else { - for ( n = n0, l = 0; l < i; l++, n = NEXT(n) ); + for ( n = n0; i > 0 && n; n = NEXT(n), i-- ); + if ( i || !n ) + error("puarray : Out of range"); + else a = (pointer)BDY(n); - } } else error("putarray : invalid assignment"); break; @@ -285,7 +285,7 @@ P p; return ( r ); } -#if defined(VISUAL) +#if defined(__GNUC__) || defined(VISUAL) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__) NODE mknode(int ac,...) { va_list ap;