swf_object_t *swf = NULL;
char *data = NULL, *new_buff = NULL;
int str_len = 0;
+ int error = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
&var_name, &var_name_len) == FAILURE) {
RETURN_FALSE;
}
swf = get_swf_object(getThis() TSRMLS_CC);
- data = swf_object_get_editstring(swf, var_name, var_name_len);
+ data = swf_object_get_editstring(swf, var_name, var_name_len, &error);
if (data == NULL) {
- RETURN_FALSE;
+ if (error) {
+ RETURN_FALSE;
+ } else {
+ RETURN_NULL();
+ }
}
str_len = strlen(data);
new_buff = emalloc(str_len);
char *
swf_object_get_editstring(swf_object_t *swf,
- char *variable_name,
- int variable_name_len) {
+ char *variable_name, int variable_name_len,
+ int *error) {
swf_tag_t *tag;
char *data = NULL;
if (swf == NULL) {
}
for (tag=swf->tag_head ; tag ; tag=tag->next) {
data = swf_tag_get_edit_string(tag, variable_name,
- variable_name_len, swf);
- if (data) {
+ variable_name_len, error, swf);
+ if (data || (*error == 0)) {
break;
}
}
unsigned long melo_data_len);
extern char *swf_object_get_editstring(swf_object_t *swf,
char *variable_name,
- int variable_name_len);
+ int variable_name_len,
+ int *error);
extern int swf_object_replace_editstring(swf_object_t *swf,
char *variable_name,
int variable_name_len,
char *
swf_tag_get_edit_string(swf_tag_t *tag,
char *variable_name, int variable_name_len,
- struct swf_object_ *swf) {
+ int *error, struct swf_object_ *swf) {
+ *error = 1;
if (tag == NULL) {
fprintf(stderr, "swf_tag_get_edit_string: tag == NULL\n");
return NULL;
return NULL;
}
return swf_tag_edit_get_string(tag->detail,
- variable_name, variable_name_len);
+ variable_name, variable_name_len, error);
}
int
extern char *swf_tag_get_edit_string(swf_tag_t *tag,
char *variable_name,
int variable_name_len,
+ int *error,
struct swf_object_ *swf);
extern int swf_tag_replace_edit_string(swf_tag_t *tag,
char *variable_name,
char *
swf_tag_edit_get_string(void *detail,
- char *variable_name, int variable_name_len) {
+ char *variable_name, int variable_name_len,
+ int *error) {
swf_tag_edit_detail_t *swf_tag_edit = (swf_tag_edit_detail_t *) detail;
char *data, *initial_text;
int initial_text_len = 0;
- if (strncmp(swf_tag_edit->edit_variable_name, variable_name, variable_name_len)) {
+ *error = 0;
+
+ if ((strlen(swf_tag_edit->edit_variable_name) != variable_name_len) || strncmp(swf_tag_edit->edit_variable_name, variable_name, variable_name_len)) {
if (atoi(variable_name) != swf_tag_edit->edit_id) {
+ *error = 1;
return NULL;
}
}
initial_text = swf_tag_edit->edit_initial_text;
+ if (initial_text == NULL) {
+ return NULL;
+ }
initial_text_len = strlen(initial_text);
data = malloc(initial_text_len + 1);
if (data == NULL) {
+ *error = 1;
fprintf(stderr, "swf_tag_edit_get_string: Can't malloc\n");
return NULL;
}
extern char *swf_tag_edit_get_string(void *detail,
char *variable_name,
- int variable_name_len);
+ int variable_name_len,
+ int *error);
extern int swf_tag_edit_replace_string(void *detail,
char *variable_name,
int variable_name_len,
--- /dev/null
+--TEST--
+replaceEditString() test;
+--FILE--
+<?php
+
+$swfdata = file_get_contents('tests/textvar.swf');
+$obj = new SWFEditor();
+$obj->input($swfdata);
+var_export($obj->getEditString('textvar'));
+var_export($obj->getEditString('text'));
+var_export($obj->getEditString(''));
+echo PHP_EOL;
+?>
+===DONE===
+--EXPECTF--
+'ABCDEFG'falsefalse
+===DONE===