osutil: emulate os.listdir's OSError for long names (issue2898)
authorMatt Mackall <mpm@selenic.com>
Wed, 13 Jul 2011 16:58:51 -0500
changeset 14873 f79d47813b8b
parent 14872 15afa4984a94
child 14874 d7b424a03627
osutil: emulate os.listdir's OSError for long names (issue2898)
mercurial/osutil.c
--- a/mercurial/osutil.c	Wed Jul 13 16:28:46 2011 -0500
+++ b/mercurial/osutil.c	Wed Jul 13 16:58:51 2011 -0500
@@ -12,6 +12,7 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include <string.h>
+#include <errno.h>
 
 #ifdef _WIN32
 #include <windows.h>
@@ -288,7 +289,8 @@
 #endif
 
 	if (pathlen >= PATH_MAX) {
-		PyErr_SetString(PyExc_ValueError, "path too long");
+		errno = ENAMETOOLONG;
+		PyErr_SetFromErrnoWithFilename(PyExc_OSError, path);
 		goto error_value;
 	}
 	strncpy(fullpath, path, PATH_MAX);