fixed a segfault bug in index()/rindex() function handler which treated a byte character as a byte string.

enhanced code to handle BOB better
This commit is contained in:
2025-07-10 23:12:47 +09:00
parent 45a22eb5a4
commit 955210800e
13 changed files with 296 additions and 32 deletions

View File

@ -237,6 +237,11 @@ static HAWK_INLINE int resolve_brs (hawk_rtx_t* rtx, hawk_val_t* brs, hawk_bcs_t
rrs->len = ((hawk_val_mbs_t*)brs)->val.len;
break;
case HAWK_VAL_BOB:
rrs->ptr = (hawk_bch_t*)((hawk_val_bob_t*)brs)->val.ptr;
rrs->len = ((hawk_val_bob_t*)brs)->val.len;
break;
default:
rrs->ptr = hawk_rtx_valtobcstrdup(rtx, brs, &rrs->len);
if (rrs->ptr == HAWK_NULL) ret = -1;
@ -1022,6 +1027,9 @@ int hawk_rtx_writeioval (hawk_rtx_t* rtx, hawk_out_type_t out_type, const hawk_o
case HAWK_VAL_MBS:
return hawk_rtx_writeiobytes(rtx, out_type, name, ((hawk_val_mbs_t*)v)->val.ptr, ((hawk_val_mbs_t*)v)->val.len);
case HAWK_VAL_BOB:
return hawk_rtx_writeiobytes(rtx, out_type, name, (hawk_bch_t*)((hawk_val_bob_t*)v)->val.ptr, ((hawk_val_bob_t*)v)->val.len);
default:
{
hawk_rtx_valtostr_out_t out;