From 77e43e7803440af0cee9272fb00930664abe01aa Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 28 Jul 2016 00:06:46 +0000 Subject: ext: avoid clobbering existing system functions These defines may cause incompatibilities if Ruby or other system headers decide to clobber these. It's also confusing to override existing, well-known-and-standardized functions. --- ext/clogger_ext/blocking_helpers.h | 7 +++++-- ext/clogger_ext/clogger.c | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ext/clogger_ext/blocking_helpers.h b/ext/clogger_ext/blocking_helpers.h index c03c2f5..15634b8 100644 --- a/ext/clogger_ext/blocking_helpers.h +++ b/ext/clogger_ext/blocking_helpers.h @@ -54,6 +54,9 @@ static ssize_t my_write(int fd, const void *buf, size_t count) return r; } -# define stat(path,buf) my_stat((path),(buf)) -# define write(fd,buf,count) my_write((fd),(buf),(count)) +# define nogvl_stat(path,buf) my_stat((path),(buf)) +# define nogvl_write(fd,buf,count) my_write((fd),(buf),(count)) +#else /* !WITHOUT_GVL, for Ruby 1.8 users: */ +# define nogvl_stat(path,buf) stat((path),(buf)) +# define nogvl_write(fd,buf,buf) write((fd),(buf),(count)) #endif /* !WITHOUT_GVL */ diff --git a/ext/clogger_ext/clogger.c b/ext/clogger_ext/clogger.c index 3db9235..f29cf26 100644 --- a/ext/clogger_ext/clogger.c +++ b/ext/clogger_ext/clogger.c @@ -243,7 +243,7 @@ static void write_full(int fd, const char *buf, size_t count) ssize_t r; while (count > 0) { - r = write(fd, buf, count); + r = nogvl_write(fd, buf, count); if ((size_t)r == count) { /* overwhelmingly likely */ return; @@ -993,7 +993,7 @@ static VALUE to_path(VALUE self) if (sscanf(cpath, "/dev/fd/%u", &devfd) == 1) rv = fstat((int)devfd, &sb); else - rv = stat(cpath, &sb); + rv = nogvl_stat(cpath, &sb); /* * calling this method implies the web server will bypass -- cgit v1.2.3-24-ge0c7