diff options
Diffstat (limited to 'options')
-rw-r--r-- | options/path.c | 8 | ||||
-rw-r--r-- | options/path.h | 6 |
2 files changed, 7 insertions, 7 deletions
diff --git a/options/path.c b/options/path.c index 17d6245582..304f009167 100644 --- a/options/path.c +++ b/options/path.c @@ -155,11 +155,11 @@ char *mp_splitext(const char *path, bstr *root) { assert(path); const char *split = strrchr(path, '.'); - if (!split) - split = path + strlen(path); + if (!split || !split[1] || strchr(split, '/')) + return NULL; if (root) - *root = (bstr){.start = (char *)path, .len = path - split}; - return (char *)split; + *root = (bstr){(char *)path, split - path}; + return (char *)split + 1; } char *mp_path_join(void *talloc_ctx, struct bstr p1, struct bstr p2) diff --git a/options/path.h b/options/path.h index 0e1744bbd0..4756379fa2 100644 --- a/options/path.h +++ b/options/path.h @@ -50,10 +50,10 @@ char *mp_get_user_path(void *talloc_ctx, struct mpv_global *global, char *mp_basename(const char *path); -/* Return file extension, including the '.'. If root is not NULL, set it to the - * part of the path without extension. So: path == root + returnvalue +/* Return file extension, excluding the '.'. If root is not NULL, set it to the + * part of the path without extension. So: path == root + "." + extension * Don't consider it a file extension if the only '.' is the first character. - * Return "" if no extension. + * Return NULL if no extension and don't set *root in this case. */ char *mp_splitext(const char *path, bstr *root); |