--- mc-4.6.1/src/util.c.symcrash 2005-09-13 12:41:54.000000000 +0200 +++ mc-4.6.1/src/util.c 2005-09-13 12:41:54.000000000 +0200 @@ -1406,21 +1406,23 @@ * as needed up in first and then goes down using second */ char *diff_two_paths (const char *first, const char *second) { - char *p, *q, *r, *s, *buf = 0; + char *p, *q, *r, *s, *buf = NULL; int i, j, prevlen = -1, currlen; char *my_first = NULL, *my_second = NULL; my_first = resolve_symlinks (first); if (my_first == NULL) return NULL; + my_second= resolve_symlinks (second); + if (my_second == NULL) { + g_free (my_first); + return NULL; + } for (j = 0; j < 2; j++) { p = my_first; if (j) { - my_second = resolve_symlinks (second); - if (my_second == NULL) { - g_free (my_first); + if (my_second == NULL) return buf; - } } q = my_second; for (;;) { --- mc-4.6.1/src/file.c.symcrash 2005-09-13 12:41:54.000000000 +0200 +++ mc-4.6.1/src/file.c 2005-09-13 12:51:44.000000000 +0200 @@ -389,7 +389,7 @@ const char *r = strrchr (src_path, PATH_SEP); if (r) { - p = g_strndup (src_path, r - src_path); + p = g_strndup (src_path, r - src_path + 1); if (*dst_path == PATH_SEP) q = g_strdup (dst_path); else