@@ -299,7 +299,7 @@ w_object(obj, arg, limit)
299
299
w_uclass (obj , cRegexp , arg );
300
300
w_byte (TYPE_REGEXP , arg );
301
301
w_bytes (RREGEXP (obj )-> str , RREGEXP (obj )-> len , arg );
302
- w_byte (FL_TEST (obj , FL_USER1 ), arg );
302
+ w_byte (reg_options (obj ), arg );
303
303
return ;
304
304
305
305
case T_ARRAY :
@@ -511,13 +511,20 @@ r_long(arg)
511
511
return x ;
512
512
}
513
513
514
- static long blen ; /* hidden length register */
515
- #define r_bytes (s , arg ) \
516
- (blen = r_long(arg), r_bytes0(&s,ALLOCA_N(char,blen),blen,arg))
514
+ #define r_bytes2 (s , len , arg ) do { \
515
+ (len) = r_long(arg); \
516
+ (s) = ALLOCA_N(char,(len)+1); \
517
+ r_bytes0((s),(len),(arg)); \
518
+ } while (0)
517
519
518
- static int
519
- r_bytes0 (sp , s , len , arg )
520
- char * * sp , * s ;
520
+ #define r_bytes (s , arg ) do { \
521
+ int r_bytes_len; \
522
+ r_bytes2((s), r_bytes_len, (arg)); \
523
+ } while (0)
524
+
525
+ static void
526
+ r_bytes0 (s , len , arg )
527
+ char * s ;
521
528
int len ;
522
529
struct load_arg * arg ;
523
530
{
@@ -531,11 +538,7 @@ r_bytes0(sp, s, len, arg)
531
538
memcpy (s , arg -> ptr , len );
532
539
arg -> ptr += len ;
533
540
}
534
-
535
- (s )[len ] = '\0' ;
536
- * sp = s ;
537
-
538
- return len ;
541
+ s [len ] = '\0' ;
539
542
}
540
543
541
544
static ID
@@ -572,8 +575,9 @@ r_string(arg)
572
575
struct load_arg * arg ;
573
576
{
574
577
char * buf ;
575
- int len = r_bytes ( buf , arg ) ;
578
+ int len ;
576
579
580
+ r_bytes2 (buf , len , arg );
577
581
return str_taint (str_new (buf , len ));
578
582
}
579
583
@@ -672,9 +676,12 @@ r_object(arg)
672
676
case TYPE_REGEXP :
673
677
{
674
678
char * buf ;
675
- int len = r_bytes (buf , arg );
676
- int ci = r_byte (arg );
677
- return r_regist (reg_new (buf , len , ci ), arg );
679
+ int len ;
680
+ int options ;
681
+
682
+ r_bytes2 (buf , len , arg );
683
+ options = r_byte (arg );
684
+ return r_regist (reg_new (buf , len , options ), arg );
678
685
}
679
686
680
687
case TYPE_ARRAY :
0 commit comments