diff options
| author | Adam Hupp <adam@hupp.org> | 2013-10-07 21:28:16 -0700 |
|---|---|---|
| committer | Adam Hupp <adam@hupp.org> | 2013-10-07 21:28:16 -0700 |
| commit | 4942310344701c0eb0fd55a16ab4583fd5b2dc63 (patch) | |
| tree | dc3859794289c8bdb8b25c9aed96d29d1347af79 /magic.py | |
| parent | 998677aa225ba0dbcb8a89c0fa8e312f38b8be65 (diff) | |
| download | python-magic-4942310344701c0eb0fd55a16ab4583fd5b2dc63.tar.gz | |
Fix failure on file-5.15. That has a bug and/or change in behvior
where the first call to magic_load results in magic_error returning a
string even though there was no error. Fixed by being more precise
about checking the return values (either nul or -1 depending on
function) rather than relying on magic_error.
Diffstat (limited to 'magic.py')
| -rw-r--r-- | magic.py | 21 |
1 files changed, 14 insertions, 7 deletions
@@ -162,13 +162,21 @@ if not libmagic or not libmagic._name: magic_t = ctypes.c_void_p -def errorcheck(result, func, args): - err = magic_error(args[0]) - if err is not None: +def errorcheck_null(result, func, args): + if result is None: + err = magic_error(args[0]) raise MagicException(err) else: return result +def errorcheck_negative_one(result, func, args): + if result is -1: + err = magic_error(args[0]) + raise MagicException(err) + else: + return result + + def coerce_filename(filename): if filename is None: return None @@ -193,7 +201,7 @@ magic_errno.argtypes = [magic_t] _magic_file = libmagic.magic_file _magic_file.restype = c_char_p _magic_file.argtypes = [magic_t, c_char_p] -_magic_file.errcheck = errorcheck +_magic_file.errcheck = errorcheck_null def magic_file(cookie, filename): return _magic_file(cookie, coerce_filename(filename)) @@ -201,8 +209,7 @@ def magic_file(cookie, filename): _magic_buffer = libmagic.magic_buffer _magic_buffer.restype = c_char_p _magic_buffer.argtypes = [magic_t, c_void_p, c_size_t] -_magic_buffer.errcheck = errorcheck - +_magic_buffer.errcheck = errorcheck_null def magic_buffer(cookie, buf): return _magic_buffer(cookie, buf, len(buf)) @@ -211,7 +218,7 @@ def magic_buffer(cookie, buf): _magic_load = libmagic.magic_load _magic_load.restype = c_int _magic_load.argtypes = [magic_t, c_char_p] -_magic_load.errcheck = errorcheck +_magic_load.errcheck = errorcheck_negative_one def magic_load(cookie, filename): return _magic_load(cookie, coerce_filename(filename)) |
