@@ -420,6 +420,9 @@ static REBCNT EncodedU32_Size(u32 value) {
420
420
Do_Path (& next , NULL );
421
421
next = DS_POP ; // volatile stack reference
422
422
}
423
+ if (IS_STRING (next )) {
424
+ Set_Binary (next , Encode_UTF8_Value (next , VAL_LEN (next ), 0 ));
425
+ }
423
426
424
427
switch (VAL_WORD_CANON (data )) {
425
428
case SYM_SI8 :
@@ -475,7 +478,6 @@ static REBCNT EncodedU32_Size(u32 value) {
475
478
}
476
479
goto error ;
477
480
case SYM_BYTES :
478
- if (IS_GET_WORD (next )) next = Get_Var (next );
479
481
if (IS_BINARY (next )) {
480
482
count += VAL_LEN (next );
481
483
continue ;
@@ -489,6 +491,7 @@ static REBCNT EncodedU32_Size(u32 value) {
489
491
else goto error ;
490
492
break ;
491
493
case SYM_UI16BYTES :
494
+ case SYM_UI16LEBYTES :
492
495
if (IS_BINARY (next )) {
493
496
ASSERT_UIBYTES_RANGE (next , 0xFFFF );
494
497
count += (2 + VAL_LEN (next ));
@@ -640,6 +643,9 @@ static REBCNT EncodedU32_Size(u32 value) {
640
643
Do_Path (& next , NULL );
641
644
next = DS_POP ; // volatile stack reference
642
645
}
646
+ if (IS_STRING (next )) {
647
+ Set_Binary (next , Encode_UTF8_Value (next , VAL_LEN (next ), 0 ));
648
+ }
643
649
644
650
switch (VAL_WORD_CANON (data )) {
645
651
case SYM_UI8 :
@@ -776,6 +782,19 @@ static REBCNT EncodedU32_Size(u32 value) {
776
782
memcpy (cp , VAL_BIN_AT (next ), n );
777
783
VAL_INDEX (buffer_write )+= 2 ; //for the length byte;
778
784
break ;
785
+ case SYM_UI16LEBYTES :
786
+ n = VAL_LEN (next );
787
+ bp = (REBYTE * )& n ;
788
+ #ifdef ENDIAN_LITTLE
789
+ memcpy (cp , bp , 2 );
790
+ #else
791
+ cp [0 ] = bp [1 ]; cp [1 ] = bp [0 ];
792
+ #endif
793
+ cp += 2 ;
794
+ memcpy (cp , VAL_BIN_AT (next ), n );
795
+ VAL_INDEX (buffer_write )+= 2 ; //for the length byte;
796
+ break ;
797
+
779
798
case SYM_UI24BYTES :
780
799
n = VAL_LEN (next );
781
800
bp = (REBYTE * )& n ;
0 commit comments