return idx;
}
-static char *strdup_substr(const char *str, int start, int end)
-{
- int size = end - start + 1;
- char *newstr = xmalloc(size);
- memcpy(newstr, str+start, size-1);
- newstr[size-1] = '\0';
- return newstr;
-}
-
static int parse_subst_cmd(struct sed_cmd *sed_cmd, const char *substr)
{
int oldidx, cflags = REG_NEWLINE;
idx = index_of_next_unescaped_regexp_delim(sed_cmd, substr, ++idx);
if (idx == -1)
error_msg_and_die("bad format in substitution expression");
- match = strdup_substr(substr, oldidx, idx);
+ match = xstrndup(substr + oldidx, idx - oldidx);
/* determine the number of back references in the match string */
/* Note: we compute this here rather than in the do_subst_command()
idx = index_of_next_unescaped_regexp_delim(sed_cmd, substr, ++idx);
if (idx == -1)
error_msg_and_die("bad format in substitution expression");
- sed_cmd->replace = strdup_substr(substr, oldidx, idx);
+ sed_cmd->replace = xstrndup(substr + oldidx, idx - oldidx);
/* process the flags */
while (substr[++idx]) {