diff options
Diffstat (limited to 'src/depend')
-rw-r--r-- | src/depend/depend.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/depend/depend.cpp b/src/depend/depend.cpp index c224efdaf..b9c8f7a23 100644 --- a/src/depend/depend.cpp +++ b/src/depend/depend.cpp @@ -30,6 +30,15 @@ #include <set> #include <stack> +/** + * Version of the standard free that accepts const pointers. + * @param ptr The data to free. + */ +static inline void free(const void *ptr) +{ + free(const_cast<void *>(ptr)); +} + #ifndef PATH_MAX /** The maximum length of paths, if we don't know it. */ # define PATH_MAX 260 @@ -672,7 +681,7 @@ void ScanFile(const char *filename, const char *ext, bool header, bool verbose) } } if (curfile->second->find(h) == curfile->second->end()) curfile->second->insert(strdup(h)); - free((void*)h); + free(h); } } /* FALL THROUGH */ @@ -705,7 +714,7 @@ void ScanFile(const char *filename, const char *ext, bool header, bool verbose) } StringSet::iterator it = defines.find(lexer.GetString()); if (it != defines.end()) { - free((void*)*it); + free(*it); defines.erase(it); } lexer.Lex(); @@ -808,7 +817,7 @@ void ScanFile(const char *filename, const char *ext, bool header, bool verbose) if (!header) { for (StringSet::iterator it = defines.begin(); it != defines.end(); it++) { - free((void*)*it); + free(*it); } defines.clear(); while (!ignore.empty()) ignore.pop(); @@ -940,31 +949,31 @@ int main(int argc, char *argv[]) for (StringMap::iterator it = _files.begin(); it != _files.end(); it++) { for (StringSet::iterator h = it->second->begin(); h != it->second->end(); h++) { - free((void*)*h); + free(*h); } it->second->clear(); delete it->second; - free((void*)it->first); + free(it->first); } _files.clear(); for (StringMap::iterator it = _headers.begin(); it != _headers.end(); it++) { for (StringSet::iterator h = it->second->begin(); h != it->second->end(); h++) { - free((void*)*h); + free(*h); } it->second->clear(); delete it->second; - free((void*)it->first); + free(it->first); } _headers.clear(); for (StringSet::iterator it = _defines.begin(); it != _defines.end(); it++) { - free((void*)*it); + free(*it); } _defines.clear(); for (StringSet::iterator it = _include_dirs.begin(); it != _include_dirs.end(); it++) { - free((void*)*it); + free(*it); } _include_dirs.clear(); |