Lines Matching refs:newstr
166 Dwelf_Strent *newstr = (Dwelf_Strent *) (st->backp + align);
167 newstr->string = str;
168 newstr->len = len;
169 newstr->next = NULL;
170 newstr->left = NULL;
171 newstr->right = NULL;
172 newstr->offset = 0;
174 newstr->reverse[i] = str[len - 2 - i];
175 newstr->reverse[len - 1] = '\0';
179 return newstr;
187 searchstring (Dwelf_Strent **sep, Dwelf_Strent *newstr)
192 *sep = newstr;
197 int cmpres = memcmp ((*sep)->reverse, newstr->reverse,
198 MIN ((*sep)->len, newstr->len) - 1);
203 return searchstring (&(*sep)->left, newstr);
205 return searchstring (&(*sep)->right, newstr);
219 Dwelf_Strent *newstr = newstring (st, str, len);
220 if (newstr == NULL)
226 Dwelf_Strent **sep = searchstring (&st->root, newstr);
227 if (*sep != newstr)
230 if ((*sep)->len > newstr->len)
235 if (subs->len == newstr->len)
239 st->left += st->backp - (char *) newstr;
240 st->backp = (char *) newstr;
247 st->backp -= newstr->len;
248 st->left += newstr->len;
250 newstr->next = (*sep)->next;
251 (*sep)->next = newstr;
253 else if ((*sep)->len != newstr->len)
258 st->total += newstr->len - (*sep)->len;
259 newstr->next = *sep;
260 newstr->left = (*sep)->left;
261 newstr->right = (*sep)->right;
262 *sep = newstr;
267 st->left += st->backp - (char *) newstr;
268 st->backp = (char *) newstr;
270 newstr = *sep;
274 st->total += newstr->len;
276 return newstr;