X Tutup
Skip to content

Commit ddedf7c

Browse files
committed
basic/escape: use _cleanup_ in one more place
Also, let's not use 'r' for a char*.
1 parent fe819f5 commit ddedf7c

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

src/basic/escape.c

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -289,9 +289,11 @@ int cunescape_one(const char *p, size_t length, char32_t *ret, bool *eight_bit,
289289
}
290290

291291
int cunescape_length_with_prefix(const char *s, size_t length, const char *prefix, UnescapeFlags flags, char **ret) {
292-
char *r, *t;
292+
_cleanup_free_ char *ans = NULL;
293+
char *t;
293294
const char *f;
294295
size_t pl;
296+
int r;
295297

296298
assert(s);
297299
assert(ret);
@@ -300,18 +302,17 @@ int cunescape_length_with_prefix(const char *s, size_t length, const char *prefi
300302

301303
pl = strlen_ptr(prefix);
302304

303-
r = new(char, pl+length+1);
304-
if (!r)
305+
ans = new(char, pl+length+1);
306+
if (!ans)
305307
return -ENOMEM;
306308

307309
if (prefix)
308-
memcpy(r, prefix, pl);
310+
memcpy(ans, prefix, pl);
309311

310-
for (f = s, t = r + pl; f < s + length; f++) {
312+
for (f = s, t = ans + pl; f < s + length; f++) {
311313
size_t remaining;
312314
bool eight_bit = false;
313315
char32_t u;
314-
int k;
315316

316317
remaining = s + length - f;
317318
assert(remaining > 0);
@@ -329,23 +330,21 @@ int cunescape_length_with_prefix(const char *s, size_t length, const char *prefi
329330
continue;
330331
}
331332

332-
free(r);
333333
return -EINVAL;
334334
}
335335

336-
k = cunescape_one(f + 1, remaining - 1, &u, &eight_bit, flags & UNESCAPE_ACCEPT_NUL);
337-
if (k < 0) {
336+
r = cunescape_one(f + 1, remaining - 1, &u, &eight_bit, flags & UNESCAPE_ACCEPT_NUL);
337+
if (r < 0) {
338338
if (flags & UNESCAPE_RELAX) {
339339
/* Invalid escape code, let's take it literal then */
340340
*(t++) = '\\';
341341
continue;
342342
}
343343

344-
free(r);
345-
return k;
344+
return r;
346345
}
347346

348-
f += k;
347+
f += r;
349348
if (eight_bit)
350349
/* One byte? Set directly as specified */
351350
*(t++) = u;
@@ -356,8 +355,8 @@ int cunescape_length_with_prefix(const char *s, size_t length, const char *prefi
356355

357356
*t = 0;
358357

359-
*ret = r;
360-
return t - r;
358+
*ret = TAKE_PTR(ans);
359+
return t - *ret;
361360
}
362361

363362
char* xescape_full(const char *s, const char *bad, size_t console_width, XEscapeFlags flags) {

0 commit comments

Comments
 (0)
X Tutup