summaryrefslogtreecommitdiff
path: root/python/examples/kaitai/__main__.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/examples/kaitai/__main__.py')
-rwxr-xr-xpython/examples/kaitai/__main__.py20
1 files changed, 10 insertions, 10 deletions
diff --git a/python/examples/kaitai/__main__.py b/python/examples/kaitai/__main__.py
index 237fc180..2accd2e5 100755
--- a/python/examples/kaitai/__main__.py
+++ b/python/examples/kaitai/__main__.py
@@ -42,19 +42,19 @@ def dump(obj, depth=0):
indent = ' '*depth
if isinstance(obj, kaitaistruct.KaitaiStruct):
- for fieldName in dir(obj):
- if hasattr(obj, fieldName):
- getattr(obj, fieldName)
-
- for fieldName in dir(obj):
- #print('considering field: %s (hasattr returns: %d)' % (fieldName, hasattr(obj, fieldName)))
- if fieldName != '_debug' and fieldName.startswith('_'):
- continue
- if fieldName in dump_exceptions:
+ fieldNames = []
+ for candidate in dir(obj):
+ if candidate != '_debug' and candidate.startswith('_'):
continue
- if not hasattr(obj, fieldName):
+ if candidate in dump_exceptions:
continue
+ try:
+ if getattr(obj, candidate, False):
+ fieldNames.append(candidate)
+ except Exception:
+ pass
+ for fieldName in fieldNames:
subObj = getattr(obj, fieldName)
if type(subObj) == types.MethodType: