Skip to content

Commit f652807

Browse files
committed
fix: Use NULL as termination condition for variable list
1 parent f9c970c commit f652807

File tree

3 files changed

+13
-15
lines changed

3 files changed

+13
-15
lines changed

src/util.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,9 @@ struct ExpandStringResult expand_string(char *input, struct ExpandStringVars var
161161
memset(var, 0, right - left);
162162
strncat(var, left + 1, right - left - 1);
163163
bool found = false;
164-
for (unsigned int i = 0; i < vars.len; ++i) {
165-
if (STR_EQ(var, vars.vars[i].key)) {
166-
strcat(output, vars.vars[i].value);
164+
for (unsigned int i = 0; vars.pairs[i].key != NULL; ++i) {
165+
if (STR_EQ(var, vars.pairs[i].key)) {
166+
strcat(output, vars.pairs[i].value);
167167
result.code = ES_SUCCESS;
168168
found = true;
169169
}
@@ -210,11 +210,11 @@ char pwddir[PATH_MAX];
210210
strcat(cfgdir, "/.config");
211211

212212
struct ExpandStringVars vars = {
213-
.len = 3,
214-
.vars = {
213+
.pairs = {
215214
{.key = "home", .value = homedir},
216215
{.key = "pwd", .value = pwddir},
217216
{.key = "cfg", .value = cfgdir},
217+
NULL,
218218
},
219219
};
220220

src/util.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ struct ExpandStringVar {
4343
};
4444

4545
struct ExpandStringVars {
46-
unsigned int len;
47-
struct ExpandStringVar vars[100];
46+
struct ExpandStringVar pairs[100];
4847
};
4948

5049
struct ExpandStringResult {

test/test.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66

77
int main() {
88
struct ExpandStringVars empty_vars = {
9-
.len = 0,
10-
.vars = {{0}},
9+
.pairs = {NULL},
1110
};
1211

1312
// No expansions
@@ -96,9 +95,9 @@ int main() {
9695
// Working
9796
{
9897
struct ExpandStringVars vars = {
99-
.len = 1,
100-
.vars = {
98+
.pairs = {
10199
{.key = "word", .value = "cool"},
100+
NULL,
102101
},
103102
};
104103
struct ExpandStringResult r = expand_string("${word}/X11", vars);
@@ -108,9 +107,9 @@ int main() {
108107

109108
{
110109
struct ExpandStringVars vars = {
111-
.len = 1,
112-
.vars = {
110+
.pairs = {
113111
{.key = "word", .value = "cool"},
112+
NULL,
114113
},
115114
};
116115
struct ExpandStringResult r = expand_string("fox-${word}", vars);
@@ -119,10 +118,10 @@ int main() {
119118
}
120119
{
121120
struct ExpandStringVars vars = {
122-
.len = 2,
123-
.vars = {
121+
.pairs = {
124122
{.key = "a", .value = "super"},
125123
{.key = "b", .value = "epic"},
124+
NULL,
126125
},
127126
};
128127
struct ExpandStringResult r = expand_string("fox-${a}_${b}", vars);

0 commit comments

Comments
 (0)