PHPAPI char *php_addslashes(char *str, int length, int *new_length, int should_free)
{
/* maximum string length, worst case situation */
- char *new_str = (char *) emalloc((length?length:(length=strlen(str)))*2+1);
+ char *new_str;
char *source,*target;
char *end;
char c;
PLS_FETCH();
-
+
+ if (!str) {
+ *new_length = 0;
+ return str;
+ }
+ new_str = (char *) emalloc((length?length:(length=strlen(str)))*2+1);
for (source=str,end=source+length,target=new_str; (c = *source) || source<end; source++) {
switch(c) {
case '\0':
SET_STACK_VARNAME;
ALLOC_ZVAL(ent.data);
- ent.data->value.str.val = NULL;
- ent.data->value.str.len = 0;
INIT_PZVAL(ent.data);
+ ent.data->type = IS_STRING;
+ ent.data->value.str.val = empty_string;
+ ent.data->value.str.len = 0;
wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry));
} else if (!strcmp(name, EL_CHAR)) {
int i;
ALLOC_ZVAL(ent.data);
INIT_PZVAL(ent.data);
+ ent.data->type = IS_LONG;
wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry));
} else if (!strcmp(name, EL_BOOLEAN)) {
int i;
ALLOC_ZVAL(ent.data);
INIT_PZVAL(ent.data);
+ ent.data->type = IS_BOOL;
wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry));
php_wddx_process_data(user_data, atts[i+1], strlen(atts[i+1]));
}
wddx_stack_top(stack, (void**)&ent);
switch (ent->type) {
case ST_STRING:
- ent->data->type = IS_STRING;
if (ent->data->value.str.len == 0) {
ent->data->value.str.val = estrndup(s, len);
ent->data->value.str.len = len;
break;
case ST_BOOLEAN:
- ent->data->type = IS_BOOL;
if (!strcmp(s, "true"))
ent->data->value.lval = 1;
else if (!strcmp(s, "false"))