hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=70490cec7028b5e03cde9288da754856a9cda177
commit 70490cec7028b5e03cde9288da754856a9cda177 Author: ChunEon Park <[email protected]> Date: Wed Mar 5 03:15:33 2014 +0900 search - fix the replace all misbehavior. I missed the offset of the delta length between replace and find. it found the position of the next incorrectly. now it's fixed. --- src/bin/search.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/bin/search.c b/src/bin/search.c index 70f84fe..4b007d5 100644 --- a/src/bin/search.c +++ b/src/bin/search.c @@ -41,14 +41,16 @@ replace_all_proc(search_data *sd) { const char *find = elm_entry_entry_get(sd->en_find); if (!find) return; - int find_len = strlen(find); + const char *replace = elm_entry_entry_get(sd->en_replace); + int replace_len = 0; //Same word. no need to replace if (replace) { - if (!strcmp(find, replace) && (find_len == strlen(replace))) + replace_len = strlen(replace); + if (!strcmp(find, replace) && (find_len == replace_len)) return; } @@ -60,10 +62,11 @@ replace_all_proc(search_data *sd) char *s = utf8; int pos; + int delta = replace_len - find_len; while ((s = strstr(s, find))) { - pos = s - utf8; + pos = s + (delta * replace_cnt) - utf8; elm_entry_select_region_set(sd->entry, pos, pos + find_len); elm_entry_entry_insert(sd->entry, replace); elm_entry_select_none(sd->entry); --
