mercurial/osutil.c
branchstable
changeset 23962 1f3b94e8dc40
parent 23961 bc851e2851b1
child 23966 2d2c0a8eeeb8
equal deleted inserted replaced
23961:bc851e2851b1 23962:1f3b94e8dc40
   286 	return stat;
   286 	return stat;
   287 }
   287 }
   288 
   288 
   289 static PyObject *_listdir(char *path, int pathlen, int keepstat, char *skip)
   289 static PyObject *_listdir(char *path, int pathlen, int keepstat, char *skip)
   290 {
   290 {
   291 	PyObject *list, *elem, *stat, *ret = NULL;
   291 	PyObject *list, *elem, *stat = NULL, *ret = NULL;
   292 	char fullpath[PATH_MAX + 10];
   292 	char fullpath[PATH_MAX + 10];
   293 	int kind, err;
   293 	int kind, err;
   294 	struct stat st;
   294 	struct stat st;
   295 	struct dirent *ent;
   295 	struct dirent *ent;
   296 	DIR *dir;
   296 	DIR *dir;
   367 			elem = Py_BuildValue("siN", ent->d_name, kind, stat);
   367 			elem = Py_BuildValue("siN", ent->d_name, kind, stat);
   368 		} else
   368 		} else
   369 			elem = Py_BuildValue("si", ent->d_name, kind);
   369 			elem = Py_BuildValue("si", ent->d_name, kind);
   370 		if (!elem)
   370 		if (!elem)
   371 			goto error;
   371 			goto error;
       
   372 		stat = NULL;
   372 
   373 
   373 		PyList_Append(list, elem);
   374 		PyList_Append(list, elem);
   374 		Py_DECREF(elem);
   375 		Py_DECREF(elem);
   375 	}
   376 	}
   376 
   377 
   377 	ret = list;
   378 	ret = list;
   378 	Py_INCREF(ret);
   379 	Py_INCREF(ret);
   379 
   380 
   380 error:
   381 error:
   381 	Py_DECREF(list);
   382 	Py_DECREF(list);
       
   383 	Py_XDECREF(stat);
   382 error_list:
   384 error_list:
   383 	closedir(dir);
   385 	closedir(dir);
   384 error_dir:
   386 error_dir:
   385 #ifdef AT_SYMLINK_NOFOLLOW
   387 #ifdef AT_SYMLINK_NOFOLLOW
   386 	close(dfd);
   388 	close(dfd);