File tree 1 file changed +20
-3
lines changed
1 file changed +20
-3
lines changed Original file line number Diff line number Diff line change @@ -476,10 +476,27 @@ enum {
476
476
***********************************************************************/
477
477
{
478
478
REBVAL * value = D_ARG (1 );
479
+ REBVAL * into = D_REF (4 ) ? D_ARG (5 ) : 0 ;
479
480
480
- if (!IS_BLOCK (value )) return R_ARG1 ;
481
- Compose_Block (value , D_REF (2 ), D_REF (3 ), D_REF (4 ) ? D_ARG (5 ) : 0 );
482
- return R_TOS ;
481
+ if (IS_BLOCK (value )) {
482
+ Compose_Block (value , D_REF (2 ), D_REF (3 ), into );
483
+ return R_TOS ;
484
+ }
485
+ else if (into != 0 ) {
486
+ REBINT start = DSP + 1 ;
487
+ if (IS_WORD (value )) {
488
+ value = Get_Var (value );
489
+ DS_PUSH (value );
490
+ }
491
+ else if (IS_PATH (value )) {
492
+ Do_Path (& value , 0 ); // pushes val on stack
493
+ }
494
+ else DS_PUSH (value );
495
+ Copy_Stack_Values (start , into );
496
+ return R_TOS ;
497
+ }
498
+
499
+ return R_ARG1 ;
483
500
}
484
501
485
502
You can’t perform that action at this time.
0 commit comments