> + > + if (match && q->type >= 0) > + match = tag->type & q->type; > + > + /* Remove tag from the results. tags are unowned so removing is > easy */ > + if (!match) > + g_queue_unlink(&res, node); > + } > + > + /* Convert GQueue to GPtrArray for sort, dedup and return */ > + i = 0; > + ret = g_ptr_array_sized_new(g_queue_get_length(&res)); > + foreach_list(node, res.head) > + { > + tag = (TMTag *) node->data; > + g_ptr_array_insert(ret, i++, tag);
I thought of g_ptr_array_insert() as a more beatiful way of saying `ret->pdata[i++] = tag`. If that's too recent (sorry, I wasn't aware) I'll use the plan C code. g_ptr_array_add() would just traverse the whole array again and again so it's not the best tool for the job either. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/geany/geany/pull/1187/files/386006313a0b78c614bd1ac522ac121e093df58d#r75812256