# HG changeset patch # User Florent Cayré # Date 1328707368 -3600 # Node ID fb5c0e60a615e6e49a6fd85f4079351709250df7 # Parent ce9c6ae03c2dc741cd827f2564bb29cf74e77683 [entity] fix crash when using cw_instantiate with empty related entity list; closes #2094462 diff -r ce9c6ae03c2d -r fb5c0e60a615 entity.py --- a/entity.py Wed Feb 08 14:17:09 2012 +0100 +++ b/entity.py Wed Feb 08 14:22:48 2012 +0100 @@ -481,7 +481,9 @@ assert eschema.has_relation(attr, role), '%s %s not found on %s' % (attr, role, eschema) rschema = eschema.subjrels[attr] if role == 'subject' else eschema.objrels[attr] if not rschema.final and isinstance(value, (tuple, list, set, frozenset)): - if len(value) == 1: + if len(value) == 0: + continue # avoid crash with empty IN clause + elif len(value) == 1: value = iter(value).next() else: # prepare IN clause diff -r ce9c6ae03c2d -r fb5c0e60a615 test/unittest_entity.py --- a/test/unittest_entity.py Wed Feb 08 14:17:09 2012 +0100 +++ b/test/unittest_entity.py Wed Feb 08 14:22:48 2012 +0100 @@ -143,6 +143,8 @@ req = self.request() p1 = req.create_entity('Personne', nom=u'di') p2 = req.create_entity('Personne', nom=u'mascio') + t = req.create_entity('Tag', name=u't0', tags=[]) + self.assertItemsEqual(t.tags, []) t = req.create_entity('Tag', name=u't1', tags=p1) self.assertItemsEqual(t.tags, [p1]) t = req.create_entity('Tag', name=u't2', tags=p1.eid)