On 11/20/2015 01:50 AM, Paolo Bonzini wrote:
> 
> 
> On 20/11/2015 07:13, Markus Armbruster wrote:
>>>> @@ -64,6 +65,7 @@ static void json_message_process_token(JSONLexer *lexer, 
>>>> QString *token, JSONTok
>>>>           parser->bracket_count == 0)) {
>>>>          goto out_emit;
>>>>      } else if (parser->token_size > MAX_TOKEN_SIZE ||
>>>> +               qlist_size(parser->tokens) > MAX_TOKEN_COUNT ||
>>>
>>> This is O(n^2).  I'd rather skip this patch, fix the memory hog and
>>> possibly decrease MAX_TOKEN_SIZE a bit.
>>
>> I can't see the square right now.
> 
> It's hidden in qlist_size:
> 
> static void qlist_size_iter(QObject *obj, void *opaque)
> {
>     size_t *count = opaque;
>     (*count)++;
> }

Yuck - we don't track size independently?  Seems like it might make a
worthwhile addition, as well as convenience functions for efficiently
adding/removing a member at either end of the list.  (But we already
know that the QObject hierarchy is silly with some of the things it does).

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to