@@ -57,7 +57,7 @@ pub fn _main() !void {
57
57
\\ z print stdout and stderr of z
58
58
\\
59
59
\\
60
- \\v20240720 https://github.com/txthinking/z
60
+ \\v20240722 https://github.com/txthinking/z
61
61
\\
62
62
\\
63
63
;
@@ -157,9 +157,12 @@ pub fn _main() !void {
157
157
}
158
158
159
159
var l = try allocator .alloc ([]u8 , args .len - 1 );
160
+ var done : ? usize = null ;
160
161
defer {
161
- for (l ) | v | {
162
- allocator .free (v );
162
+ if (done ) | i | {
163
+ for (0.. (i + 1 )) | j | {
164
+ allocator .free (l [j ]);
165
+ }
163
166
}
164
167
allocator .free (l );
165
168
}
@@ -170,6 +173,7 @@ pub fn _main() !void {
170
173
const b = try allocator .alloc (u8 , v .len );
171
174
@memcpy (b , v );
172
175
l [i ] = b ;
176
+ done = i ;
173
177
continue ;
174
178
}
175
179
if (std .mem .startsWith (u8 , v , "." ) or std .mem .containsAtLeast (u8 , v , 1 , "/" )) {
@@ -178,8 +182,10 @@ pub fn _main() !void {
178
182
const b = try allocator .alloc (u8 , b0 .len );
179
183
@memcpy (b , b0 );
180
184
l [i ] = b ;
185
+ done = i ;
181
186
continue ;
182
187
}
188
+ // std.process.Child does not find exec on given env now, so find it first
183
189
var s1 = std .ArrayList (u8 ).init (allocator );
184
190
defer s1 .deinit ();
185
191
var s2 = std .ArrayList (u8 ).init (allocator );
@@ -199,11 +205,13 @@ pub fn _main() !void {
199
205
const b = try allocator .alloc (u8 , s1 .items .len - 1 );
200
206
@memcpy (b , s1 .items [0 .. s1 .items .len - 1 ]);
201
207
l [i ] = b ;
208
+ done = i ;
202
209
continue ;
203
210
}
204
211
const b = try allocator .alloc (u8 , v .len );
205
212
@memcpy (b , v );
206
213
l [i ] = b ;
214
+ done = i ;
207
215
}
208
216
209
217
var string = std .ArrayList (u8 ).init (allocator );
0 commit comments