##// END OF EJS Templates
obsolete: explode if metadata contains invalid UTF-8 sequence (API)...
Yuya Nishihara -
r38730:ff1182d1 default
parent child Browse files
Show More
@@ -80,6 +80,7 b' from . import ('
80 obsutil,
80 obsutil,
81 phases,
81 phases,
82 policy,
82 policy,
83 pycompat,
83 util,
84 util,
84 )
85 )
85 from .utils import dateutil
86 from .utils import dateutil
@@ -600,6 +601,16 b' class obsstore(object):'
600 raise ValueError(_('in-marker cycle with %s') % node.hex(prec))
601 raise ValueError(_('in-marker cycle with %s') % node.hex(prec))
601
602
602 metadata = tuple(sorted(metadata.iteritems()))
603 metadata = tuple(sorted(metadata.iteritems()))
604 for k, v in metadata:
605 try:
606 # might be better to reject non-ASCII keys
607 k.decode('utf-8')
608 v.decode('utf-8')
609 except UnicodeDecodeError:
610 raise error.ProgrammingError(
611 'obsstore metadata must be valid UTF-8 sequence '
612 '(key = %r, value = %r)'
613 % (pycompat.bytestr(k), pycompat.bytestr(v)))
603
614
604 marker = (bytes(prec), tuple(succs), int(flag), metadata, date, parents)
615 marker = (bytes(prec), tuple(succs), int(flag), metadata, date, parents)
605 return bool(self.add(transaction, [marker]))
616 return bool(self.add(transaction, [marker]))
General Comments 0
You need to be logged in to leave comments. Login now