X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fmarshal.c;h=959291a31fb914f822205b34e1a54153766e950e;hp=805f12d1ecb8e487be3da35f085fc29c2bd2ea7a;hb=440ff658995f1378fd74c0101ff6c2b4951ffdf9;hpb=4bee5440cea39ab77bdbe025b9669f7c73424d72 diff --git a/src/marshal.c b/src/marshal.c index 805f12d..959291a 100644 --- a/src/marshal.c +++ b/src/marshal.c @@ -273,13 +273,11 @@ static inline impl_val *psi_val_intval(impl_val *tmp, token_t real_type, zend_lo case PSI_T_UINT8: tmp->u8 = intval; break; case PSI_T_INT16: tmp->i16 = intval; break; case PSI_T_UINT16: tmp->u16 = intval; break; + case PSI_T_ENUM: case PSI_T_INT32: tmp->i32 = intval; break; case PSI_T_UINT32: tmp->u32 = intval; break; case PSI_T_INT64: tmp->i64 = intval; break; case PSI_T_UINT64: tmp->u64 = intval; break; - case PSI_T_ENUM: - case PSI_T_INT: tmp->ival = intval; break; - case PSI_T_LONG: tmp->lval = intval; break; case PSI_T_FLOAT: tmp->fval = intval; break; case PSI_T_DOUBLE: tmp->dval = intval; break; #ifdef HAVE_LONG_DOUBLE @@ -455,16 +453,19 @@ impl_val *psi_let_strlen(impl_val *tmp, struct psi_decl_arg *spec, token_t impl_ { if (ival && impl_type == PSI_T_STRING) { if (ival->zend.str) { - tmp->lval = ival->zend.str->len; + tmp->u64 = ival->zend.str->len; } else { - tmp->lval = 0; + tmp->u64 = 0; } } else { zend_string *zs = zval_get_string(zvalue); - tmp->lval = zs->len; + tmp->u64 = zs->len; zend_string_release(zs); } + if (spec) { + psi_calc_cast(PSI_T_UINT64, tmp, psi_decl_type_get_real(spec->type)->type, tmp); + } return tmp; }