tkomatsu/webserv

Return value of ft::split() can be vector<string>?

tkomatsu opened this issue · 1 comments

概要

ft::split(string)の返り値が配列(ポインタのポインタ)ではなく、vectorになると嬉しいです。

webserv/srcs/utility.cpp

Lines 30 to 43 in 6194810

char **split(std::string s, char c) {
char **p;
int i = 0, j = 0, cnt;
if (!(p = (char **)malloc(sizeof(char *) * (count(s, c) + 1)))) return (NULL);
while (s[j]) {
while (s[j] == c) j++;
cnt = j;
while (s[j] != c && s[j]) j++;
if (j > cnt) p[i++] = strdup(s.substr(cnt, j - cnt).c_str());
}
p[i] = NULL;
return (p);
}

背景

Requestのパーサーでもsplitを使いたいです。
今のままでも問題ないのですが、メモリリークを避けるためにfree()を加える必要があります。
vectorであればデストラクタが動くので、その処理が不要になります。
人為的なミスを避けるために、vectorが変えるようになると嬉しいです。

execve()の呼び出しの際に使用するため、変更不可。
新たにパーサー用のものを作成する。