Skip to content

Commit d75e779

Browse files
committed
fix Unicode handling in bencode assignment
1 parent 88fefb4 commit d75e779

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/pyrocore/util/metafile.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ def assign_fields(meta, assignments):
269269
If just a key name is given (no '='), the field is removed.
270270
"""
271271
for assignment in assignments:
272+
assignment = fmt.to_unicode(assignment)
272273
try:
273274
if '=' in assignment:
274275
field, val = assignment.split('=', 1)
@@ -283,14 +284,16 @@ def assign_fields(meta, assignments):
283284
keypath = [i.replace('\0', '.') for i in field.replace('..', '\0').split('.')]
284285
for key in keypath[:-1]:
285286
# Create missing dicts as we go...
286-
namespace = namespace.setdefault(key, {})
287+
namespace = namespace.setdefault(fmt.to_utf8(key), {})
287288
except (KeyError, IndexError, TypeError, ValueError) as exc:
289+
if self.options.debug:
290+
raise
288291
raise error.UserError("Bad assignment %r (%s)!" % (assignment, exc))
289292
else:
290293
if val is None:
291-
del namespace[keypath[-1]]
294+
del namespace[fmt.to_utf8(keypath[-1])]
292295
else:
293-
namespace[keypath[-1]] = val
296+
namespace[fmt.to_utf8(keypath[-1])] = fmt.to_utf8(val)
294297

295298
return meta
296299

0 commit comments

Comments
 (0)