}
 }
 
-static const char *parse_range_funcname(const char *arg, nth_line_fn_t nth_line_cb,
-                                       void *cb_data, long lines, long anchor, long *begin, long *end,
-                                       const char *path)
+static const char *parse_range_funcname(
+       const char *arg, nth_line_fn_t nth_line_cb,
+       void *cb_data, long lines, long anchor, long *begin, long *end,
+       const char *path, struct index_state *istate)
 {
        char *pattern;
        const char *term;
        anchor--; /* input is in human terms */
        start = nth_line_cb(cb_data, anchor);
 
-       drv = userdiff_find_by_path(path);
+       drv = userdiff_find_by_path(istate, path);
        if (drv && drv->funcname.pattern) {
                const struct userdiff_funcname *pe = &drv->funcname;
                xecfg = xcalloc(1, sizeof(*xecfg));
 
 int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
                    void *cb_data, long lines, long anchor,
-                   long *begin, long *end, const char *path)
+                   long *begin, long *end,
+                   const char *path, struct index_state *istate)
 {
        *begin = *end = 0;
 
                anchor = lines + 1;
 
        if (*arg == ':' || (*arg == '^' && *(arg + 1) == ':')) {
-               arg = parse_range_funcname(arg, nth_line_cb, cb_data, lines, anchor, begin, end, path);
+               arg = parse_range_funcname(arg, nth_line_cb, cb_data,
+                                          lines, anchor, begin, end,
+                                          path, istate);
                if (!arg || *arg)
                        return -1;
                return 0;
        return 0;
 }
 
-const char *skip_range_arg(const char *arg)
+const char *skip_range_arg(const char *arg, struct index_state *istate)
 {
        if (*arg == ':' || (*arg == '^' && *(arg + 1) == ':'))
-               return parse_range_funcname(arg, NULL, NULL, 0, 0, NULL, NULL, NULL);
+               return parse_range_funcname(arg, NULL, NULL,
+                                           0, 0, NULL, NULL,
+                                           NULL, istate);
 
        arg = parse_loc(arg, NULL, NULL, 0, -1, NULL);