-/* $Id: insert.c,v 1.27 2006-08-14 10:40:09 adam Exp $
- Copyright (C) 1995-2006
+/* $Id: insert.c,v 1.31 2007-01-15 15:10:15 adam Exp $
+ Copyright (C) 1995-2007
Index Data ApS
This file is part of the Zebra server.
Dict_char prev_char = 0;
int best_no = -1, no_current = 1;
+ dict->no_split++;
/* determine splitting char... */
indxp = (short*) ((char*) p+DICT_bsize(p)-sizeof(short));
for (i = DICT_nodir (p); --i >= 0; --indxp)
}
}
}
- if (best_no < 0) /* we didn't find any tail string entry at all! */
- return -1;
+ assert(best_no >= 0); /* we didn't find any tail string entry at all! */
j = best_indxp - (short*) p;
subptr = new_page (dict, ptr, &subp);
if (split_page (dict, ptr, p))
{
yaz_log (YLOG_FATAL, "Unable to split page %d\n", ptr);
- abort ();
+ assert(0);
}
return dict_ins (dict, str-1, ptr, userlen, userinfo);
}
int dict_insert (Dict dict, const char *str, int userlen, void *userinfo)
{
+ if (!dict->rw)
+ return -1;
+ dict->no_insert++;
if (!dict->head.root)
{
void *p;
- if (dict->rw)
- dict->head.root = new_page (dict, 0, &p);
+ dict->head.root = new_page (dict, 0, &p);
if (!dict->head.root)
- return 0;
+ return -1;
}
return dict_ins (dict, (const Dict_char *) str, dict->head.root,
userlen, userinfo);