- wwList.ww_alloc++; /* going to allocate a new one... */
- return whowas_init((struct Whowas *) MyMalloc(sizeof(struct Whowas)));
+ if (wwList.ww_alloc >= feature_int(FEAT_NICKNAMEHISTORYLENGTH)) {
+ /* reclaim the oldest whowas entry */
+ ww = whowas_clean(wwList.ww_tail);
+ } else {
+ /* allocate a new one */
+ wwList.ww_alloc++;
+ ww = (struct Whowas *) MyMalloc(sizeof(struct Whowas));
+ }
+
+ assert(ww != NULL);
+ memset(ww, 0, sizeof(*ww));
+ return ww;