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
signature.asc
Description: OpenPGP digital signature