diff options
-rw-r--r-- | ext/hyperwave/hg_comm.c | 6 | ||||
-rw-r--r-- | tests/testhyperwave | 16 |
2 files changed, 17 insertions, 5 deletions
diff --git a/ext/hyperwave/hg_comm.c b/ext/hyperwave/hg_comm.c index 45ee5c6ca8..a3fe28265d 100644 --- a/ext/hyperwave/hg_comm.c +++ b/ext/hyperwave/hg_comm.c @@ -461,7 +461,7 @@ DLIST *fnCreateAnchorList(hw_objectID objID, char **anchors, char **docofanchorr char *htmlattr, *str2; int offset; str1 = object; - htmlattr = emalloc(strlen(object)); + htmlattr = emalloc(strlen(object)); /* alloc mem big enough for htmlattr */ htmlattr[0] = '\0'; offset = 0; while(NULL != (str = strstr(str1, "HtmlAttr="))) { @@ -469,7 +469,9 @@ DLIST *fnCreateAnchorList(hw_objectID objID, char **anchors, char **docofanchorr str1 = str; while((*str1 != '\n') && (*str1 != '\0')) str1++; - if(NULL != (str2 = strchr(str, '='))) { + /* Find the '=' in the HTML attr and make sure it is part of the + attr and not somewhere in the objrec. */ + if((NULL != (str2 = strchr(str, '='))) && (str2 < str1)) { str2++; strncpy(&htmlattr[offset], str, str2 - str); offset = offset + (str2 - str); diff --git a/tests/testhyperwave b/tests/testhyperwave index 5391cc6f34..36f2b8c284 100644 --- a/tests/testhyperwave +++ b/tests/testhyperwave @@ -27,8 +27,8 @@ /* Lists an object array */ function list_attr($attributes) { - var_dump($attributes); - return; +// var_dump($attributes); +// return; for($i=0; $i<count($attributes); $i++) { $key = key($attributes); switch($key) { @@ -59,7 +59,17 @@ printf("\n"); break; default: - printf("%s = %s\n", $key, $attributes[$key]); + if(is_array($attributes[$key])) { + $group_arr = $attributes[$key]; + $cj = count($group_arr); + for($j=0; $j<$cj; $j++) { + printf("%s = %s\n", $key, $group_arr[$j]); + next($group_arr); + } + } else { + printf("%s = %s\n", $key, $attributes[$key]); + } + } next($attributes); } |