ruby-changes:55744
From: Nobuyoshi <ko1@a...>
Date: Fri, 17 May 2019 13:23:37 +0900 (JST)
Subject: [ruby-changes:55744] Nobuyoshi Nakada: b1b385465e (trunk): Do not call memcpy if copying nothing
https://git.ruby-lang.org/ruby.git/commit/?id=b1b385465e From b1b385465e4fc1cab84b2a3fa112a33a3e5ab076 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada <nobu@r...> Date: Fri, 17 May 2019 10:25:34 +0900 Subject: Do not call memcpy if copying nothing c.f. * e7b18ca6d9b45b7e71694557b9fab8152c62c1ed * 34e1079aef81d108890fb167d7df69960e994ff5 diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index c73fd63..0c6d7e3 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -1749,6 +1749,15 @@ rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize) https://github.com/ruby/ruby/blob/trunk/include/ruby/ruby.h#L1749 #define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(size_t)(n)) #define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(size_t)(n)) #define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(size_t)(n)) +#ifdef __GLIBC__ +static inline void * +ruby_nonempty_memcpy(void *dest, const void *src, size_t n) +{ + /* if nothing to be copied, src may be NULL */ + return (n ? memcpy(dest, src, n) : dest); +} +#define memcpy(p1,p2,n) ruby_nonempty_memcpy(p1, p2, n) +#endif void rb_obj_infect(VALUE victim, VALUE carrier); -- cgit v0.10.2 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/