From febcaa8708a4584262b1fa5ab026ba273db2c69e Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sat, 12 Jul 2025 03:15:09 +0900 Subject: [PATCH] allowed BOB in concat op --- lib/run.c | 1 + lib/val.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/run.c b/lib/run.c index ca12bcca..140df118 100644 --- a/lib/run.c +++ b/lib/run.c @@ -6262,6 +6262,7 @@ static hawk_val_t* eval_binop_concat (hawk_rtx_t* rtx, hawk_val_t* left, hawk_va { case HAWK_VAL_BCHR: case HAWK_VAL_MBS: + case HAWK_VAL_BOB: { hawk_bcs_t l, r; diff --git a/lib/val.c b/lib/val.c index 75a9c7e1..75fff087 100644 --- a/lib/val.c +++ b/lib/val.c @@ -2319,14 +2319,20 @@ hawk_bch_t* hawk_rtx_valtobcstrdupwithcmgr (hawk_rtx_t* rtx, const hawk_val_t* v { hawk_bch_t tmp = HAWK_RTX_GETBCHRFROMVAL(rtx, v); mbs = hawk_rtx_dupbchars(rtx, &tmp, 1); - if (!mbs) return HAWK_NULL; + if (HAWK_UNLIKELY(!mbs)) return HAWK_NULL; if (len) *len = 1; break; } case HAWK_VAL_MBS: mbs = hawk_rtx_dupbchars(rtx, ((hawk_val_mbs_t*)v)->val.ptr, ((hawk_val_mbs_t*)v)->val.len); - if (!mbs) return HAWK_NULL; + if (HAWK_UNLIKELY(!mbs)) return HAWK_NULL; + if (len) *len = ((hawk_val_mbs_t*)v)->val.len; + break; + + case HAWK_VAL_BOB: + mbs = hawk_rtx_dupbchars(rtx, (hawk_bch_t*)((hawk_val_bob_t*)v)->val.ptr, ((hawk_val_bob_t*)v)->val.len); + if (HAWK_UNLIKELY(!mbs)) return HAWK_NULL; if (len) *len = ((hawk_val_mbs_t*)v)->val.len; break; @@ -2350,14 +2356,14 @@ hawk_bch_t* hawk_rtx_valtobcstrdupwithcmgr (hawk_rtx_t* rtx, const hawk_val_t* v } #if defined(HAWK_OOCH_IS_BCH) mbs = hawk_rtx_dupbchars(rtx, ptr, slen); - if (!mbs) return HAWK_NULL; + if (HAWK_UNLIKELY(!mbs)) return HAWK_NULL; if (len) *len = slen; #else { hawk_oow_t mbslen, wcslen; wcslen = slen; mbs = hawk_rtx_duputobcharswithcmgr(rtx, ptr, wcslen, &mbslen, cmgr); - if (!mbs) return HAWK_NULL; + if (HAWK_UNLIKELY(!mbs)) return HAWK_NULL; if (len) *len = mbslen; } #endif @@ -2384,7 +2390,7 @@ hawk_bch_t* hawk_rtx_valtobcstrdupwithcmgr (hawk_rtx_t* rtx, const hawk_val_t* v mbs = hawk_rtx_duputobcharswithcmgr(rtx, out.u.cpldup.ptr, out.u.cpldup.len, &mbslen, cmgr); hawk_rtx_freemem (rtx, out.u.cpldup.ptr); - if (!mbs) return HAWK_NULL; + if (HAWK_UNLIKELY(!mbs)) return HAWK_NULL; if (len) *len = mbslen; #endif break;