mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
string.c: simplify memcmp guard with ternary operator
refactored the NULL pointer guard in mrb_str_cmp() from an if-else block to a more concise ternary operator. functionality remains the same: avoids undefined behavior by skipping memcmp() when comparing zero-length strings. Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
+1
-9
@@ -1200,15 +1200,7 @@ mrb_str_cmp(mrb_state *mrb, mrb_value str1, mrb_value str2)
|
||||
mrb_int len1 = RSTR_LEN(s1);
|
||||
mrb_int len2 = RSTR_LEN(s2);
|
||||
mrb_int len = lesser(len1, len2);
|
||||
mrb_int retval;
|
||||
|
||||
/* avoid UB: memcmp requires non-NULL pointers even when size is 0 */
|
||||
if (len == 0) {
|
||||
retval = 0;
|
||||
}
|
||||
else {
|
||||
retval = memcmp(RSTR_PTR(s1), RSTR_PTR(s2), len);
|
||||
}
|
||||
mrb_int retval = (len == 0) ? 0 : memcmp(RSTR_PTR(s1), RSTR_PTR(s2), len);
|
||||
|
||||
if (retval == 0) {
|
||||
if (len1 == len2) return 0;
|
||||
|
||||
Reference in New Issue
Block a user