+ rc= mme_parsekey(ip,&mme,prefix,preflen,0); if (rc) goto x_rc;
+
+ for (insertat=0, search=mm->entries;
+ insertat < mm->allocd &&
+ search->prefixlen != -1;
+ insertat++, search++) {
+ cmp= mme_ordercompare(&mme,search);
+ if (!cmp) {
+ mme_free(&mme);
+ Tcl_DecrRefCount(search->data);
+ goto put_here;
+ }
+ if (cmp>0)
+ /* the new one sorts later, insert it here */
+ break;
+ }
+
+ /* we're adding an entry, make room for it */
+ findend= mm_count(mm);
+ if (findend == mm->allocd) mm_reallocentries(mm, mm->allocd*2 + 1);
+ if (findend > insertat)
+ memmove(&mm->entries[insertat+1],
+ &mm->entries[insertat],
+ sizeof(mm->entries[0]) * (findend - insertat));
+ *search= mme;
+
+ put_here:
+ Tcl_IncrRefCount(data);
+ search->data= data;