zval * cpMD5(zval *arr) {//pass in array , out md5 zval smart_str ser_data = {0}; cp_serialize(&ser_data, arr); zval fun_name, **args[1], *retval, *str; CP_ZVAL_STRING(&fun_name, "md5", 0); CP_MAKE_STD_ZVAL(str); #if PHP_MAJOR_VERSION < 7 CP_ZVAL_STRINGL(str, ser_data.c, ser_data.len, 1); #else zend_string *str_data = ser_data.s; CP_ZVAL_STRINGL(str, str_data->val, str_data->len, 1); #endif args[0] = &str; if (cp_call_user_function_ex(CG(function_table), NULL, &fun_name, &retval, 1, args, 0, NULL TSRMLS_CC) != SUCCESS) { cp_zval_ptr_dtor(&str); smart_str_free(&ser_data); return NULL; } cp_zval_ptr_dtor(&str); smart_str_free(&ser_data); return retval; }
void cp_ser_and_setdis(zval *arr) { smart_str ser_data = {0}; cp_serialize(&ser_data, arr); #if PHP_MAJOR_VERSION < 7 memcpy(CPGL.ping_mem_addr + CP_PING_MD5_LEN + CP_PING_PID_LEN, ser_data.c, ser_data.len); #else zend_string *str = ser_data.s; memcpy(CPGL.ping_mem_addr + CP_PING_MD5_LEN + CP_PING_PID_LEN, str->val, str->len); #endif smart_str_free(&ser_data); }
CPINLINE zval * cpMD5(zval *arr) {//pass in array , out md5 zval smart_str ser_data = {0}; cp_serialize(&ser_data, arr); zval fun_name, **args[1], *retval, *str; ZVAL_STRING(&fun_name, "md5", 0); MAKE_STD_ZVAL(str); ZVAL_STRINGL(str, ser_data.c, ser_data.len, 1); args[0] = &str; if (call_user_function_ex(CG(function_table), NULL, &fun_name, &retval, 1, args, 0, NULL TSRMLS_CC) != SUCCESS) { zval_ptr_dtor(&str); smart_str_free(&ser_data); return NULL; } zval_ptr_dtor(&str); smart_str_free(&ser_data); return retval; }
CPINLINE void cp_ser_and_setdis(zval *arr) { smart_str ser_data = {0}; cp_serialize(&ser_data, arr); memcpy(CPGL.ping_mem_addr + CP_PING_MD5_LEN + CP_PING_PID_LEN, ser_data.c, ser_data.len); smart_str_free(&ser_data); }