/* This is no longer used in tinyldap (see mduptab.h). * The sources are here for historic reference. */ #include #include #include "strduptab.h" #include "strstorage.h" #include #define PAGESIZE 4096 const char* strduptab_add(struct stringduptable* t,const char* s) { size_t i; for (i=0; in; ++i) if (str_equal(t->s[i],s)) return t->s[i]; if (t->n>=t->a) { const char** x; size_t a=t->a*2; // this can not overflow // t->s is t->a*sizeof(char*), which is always at least *2 if (!a) a=1024; if (!(x=reallocarray((char**)t->s,a,sizeof(char*)))) return 0; t->a=a; t->s=x; } { const char* x=strstorage_add(s,str_len(s)+1); if (!x) return 0; s=x; } t->s[t->n]=s; ++t->n; return s; }