# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 2015-05-08 21:13:12
# Node ID fe3a72a3e7cab21ebb76d28419c38bed9158658c
# Parent  f41539418b413b5aec512aa3fcf48996a39e81ac

dirs.c: pass C string, not Python string, to _finddir()

The callers already have the C string, and although the
PyString_AS_STRING() macro is probably free, this simplifies the code.

diff --git a/mercurial/dirs.c b/mercurial/dirs.c
--- a/mercurial/dirs.c
+++ b/mercurial/dirs.c
@@ -28,12 +28,10 @@ typedef struct {
 	PyObject *dict;
 } dirsObject;
 
-static inline Py_ssize_t _finddir(PyObject *path, Py_ssize_t pos)
+static inline Py_ssize_t _finddir(const char *path, Py_ssize_t pos)
 {
-	const char *s = PyString_AS_STRING(path);
-
 	while (pos != -1) {
-		if (s[pos] == '/')
+		if (path[pos] == '/')
 			break;
 		pos -= 1;
 	}
@@ -48,7 +46,7 @@ static int _addpath(PyObject *dirs, PyOb
 	PyObject *key = NULL;
 	int ret = -1;
 
-	while ((pos = _finddir(path, pos - 1)) != -1) {
+	while ((pos = _finddir(cpath, pos - 1)) != -1) {
 		PyObject *val;
 
 		/* It's likely that every prefix already has an entry
@@ -100,7 +98,7 @@ static int _delpath(PyObject *dirs, PyOb
 	PyObject *key = NULL;
 	int ret = -1;
 
-	while ((pos = _finddir(path, pos - 1)) != -1) {
+	while ((pos = _finddir(cpath, pos - 1)) != -1) {
 		PyObject *val;
 
 		key = PyString_FromStringAndSize(cpath, pos);