Skip to content

Commit 33bc6fb

Browse files
Replace libc strdup usage with internal impl to restore musl compat. (#10811) (#10818)
Co-authored-by: Derek Perez <perezd@users.noreply.github.com>
1 parent 0d8ac76 commit 33bc6fb

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

ruby/ext/google/protobuf_c/message.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,7 +1290,9 @@ VALUE build_module_from_enumdesc(VALUE _enumdesc) {
12901290
int n = upb_EnumDef_ValueCount(e);
12911291
for (int i = 0; i < n; i++) {
12921292
const upb_EnumValueDef* ev = upb_EnumDef_Value(e, i);
1293-
char* name = strdup(upb_EnumValueDef_Name(ev));
1293+
upb_Arena* arena = upb_Arena_New();
1294+
const char* src_name = upb_EnumValueDef_Name(ev);
1295+
char* name = upb_strdup2(src_name, strlen(src_name), arena);
12941296
int32_t value = upb_EnumValueDef_Number(ev);
12951297
if (name[0] < 'A' || name[0] > 'Z') {
12961298
if (name[0] >= 'a' && name[0] <= 'z') {
@@ -1303,7 +1305,7 @@ VALUE build_module_from_enumdesc(VALUE _enumdesc) {
13031305
}
13041306
}
13051307
rb_define_const(mod, name, INT2NUM(value));
1306-
free(name);
1308+
upb_Arena_Free(arena);
13071309
}
13081310

13091311
rb_define_singleton_method(mod, "lookup", enum_lookup, 1);

0 commit comments

Comments
 (0)