@techee commented on this pull request.
> @@ -241,6 +241,29 @@ void tm_ctags_clear_ignore_symbols(void)
}
+static void replace_str(gchar **where, const gchar *what, guint what_len,
+ const gchar *replacement, guint replacement_len)
+{
+ if (where && *where)
+ {
+ guint where_len = strlen(*where);
+ gchar *pos = strstr(*where, what);
+
+ if (pos)
+ {
+ gchar *str = g_malloc(where_len + replacement_len);
It was really just a poor man's "improvement" of the original code which used
the hard-coded value 50 (which is OK in this case because the randomized
anonymous names generated by ctags are smaller). Since I moved the code to the
(wannabe) generic `replace_str` function, I wanted to get rid of the hard-coded
value but was lazy to do it right.
> @@ -241,6 +241,29 @@ void tm_ctags_clear_ignore_symbols(void)
}
+static void replace_str(gchar **where, const gchar *what, guint what_len,
+ const gchar *replacement, guint replacement_len)
+{
+ if (where && *where)
+ {
+ guint where_len = strlen(*where);
OK.
> +static void replace_str(gchar **where, const gchar *what, guint what_len,
+ const gchar *replacement, guint replacement_len)
Don't worry, I'm not going to use it as a base for some general-purpose string
utility library ;-)
> /* We found the parent name in the nested tag
> scope - replace it
* with the new name. Note: anonymous tag names
generated by
* ctags are unique enough that we don't have
to check for
* scope separators here. */
- if (pos)
- {
- gchar *str = g_malloc(nested_scope_len
+ 50);
- guint prefix_len = pos -
nested_tag->scope;
-
- strncpy(str, nested_tag->scope,
prefix_len);
- strcpy(str + prefix_len, new_name);
- strcpy(str + prefix_len + new_name_len,
pos + orig_name_len);
- g_free(nested_tag->scope);
- nested_tag->scope = str;
- }
+ replace_str(&nested_tag->scope, orig_name,
orig_name_len, new_name, new_name_len);
+
+ /* Do the same for var_type as well */
+ replace_str(&nested_tag->var_type, orig_name,
orig_name_len, new_name, new_name_len);
Right, I missed we are doing the same replacement once more below. We could
maybe even use the GString version, I'm not sure if the performance is too
critical here.
I checked what you propose and it looks good to me and unifies the code a
little.
> @@ -241,6 +241,29 @@ void tm_ctags_clear_ignore_symbols(void)
}
+static void replace_str(gchar **where, const gchar *what, guint what_len,
+ const gchar *replacement, guint replacement_len)
+{
+ if (where && *where)
+ {
+ guint where_len = strlen(*where);
+ gchar *pos = strstr(*where, what);
+
+ if (pos)
+ {
+ gchar *str = g_malloc(where_len + replacement_len);
+ guint prefix_len = pos - *where;
OK.
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3785#discussion_r1576847481
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/pull/3785/review/[email protected]>