A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
The memory management of dirname is stupid, so be brutal
[simgrid.git]
/
src
/
xbt
/
xbt_os_file.c
diff --git
a/src/xbt/xbt_os_file.c
b/src/xbt/xbt_os_file.c
index
0de1cd2
..
2dda1b2
100644
(file)
--- a/
src/xbt/xbt_os_file.c
+++ b/
src/xbt/xbt_os_file.c
@@
-74,7
+74,10
@@
char *xbt_dirname(const char *path) {
err = _splitpath_s(path, drive, _MAX_DRIVE, dir, _MAX_DIR, NULL,0, NULL,0);
return bprintf("%s%s",drive,dir);
#else
err = _splitpath_s(path, drive, _MAX_DRIVE, dir, _MAX_DIR, NULL,0, NULL,0);
return bprintf("%s%s",drive,dir);
#else
- return dirname(xbt_strdup(path));
+ char *tmp = xbt_strdup(path);
+ char *res = xbt_strdup(dirname(tmp));
+ free(tmp);
+ return res;
#endif
}
/** @brief Returns the file component of a path (reimplementation of POSIX basename)
#endif
}
/** @brief Returns the file component of a path (reimplementation of POSIX basename)
@@
-89,6
+92,9
@@
char *xbt_basename(const char *path) {
err = _splitpath_s(path, NULL,0, NULL,0, file,1024, ext,1024);
return bprintf("%s.%s",file,ext);
#else
err = _splitpath_s(path, NULL,0, NULL,0, file,1024, ext,1024);
return bprintf("%s.%s",file,ext);
#else
- return basename(xbt_strdup(path));
+ char *tmp = xbt_strdup(path);
+ char *res = xbt_strdup(basename(tmp));
+ free(tmp);
+ return res;
#endif
}
#endif
}