There seems to be a problem with the clear() method
for ID3_FieldImpl in field.cpp. When _fixed_size = 0
in the case of text string lists(like IPLS),
_num_items is not set to zero. As a result, when a
field is re-Parse()'d, _num_items gets added on and
GetNumTextItems() produces a wrong result. Though I
haven't tested this, I guess calling GetRawTextItem()
with an invalid value may return a segfaulting
pointer.
The diff section is here.
bash-2.05$ diff field.cpp.original field.cpp
955c955,957
< break;
---
> else
> _num_items = 0 ;
> break ;