我试图重构/修复一个函数,我是否正确地进行了截断?如果不是,这一般应该怎么做?特别想知道潜在的泄漏。
void process_entry(GMenuTreeEntry *entry)
{
char *name = g_strdup (gmenu_tree_entry_get_name(entry));
char *exec = g_strdup (gmenu_tree_entry_get_exec(entry));
int i;
for (i = 0; i < strlen(exec) - 1; i++) {
if (exec[i] == '%')
{
switch (exec[i+1]) {
case 'f': case 'F':
case 'u': case 'U':
case 'd': case 'D':
case 'n': case 'N':
case 'i': case 'c': case 'k': case 'v': case 'm':
exec[i-1] = '\0';
i++;
break;
}
}
}
g_printf("<item label=\"%s\">\n", g_strjoinv("&", g_strsplit(name,"&",0))),
g_printf("<action name=\"Execute\"><command>%s</command></action>\n", exec),
g_printf("</item>\n");
g_free(name);
g_free(exec);
}
这是一些 GPL 代码,非常感谢您的帮助。总的来说,我对 C 语言还是很陌生,而 glib 我确实是全新的。