From e8550265002a53f0a7e736aeb6b9b711b6bacfab Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 30 Aug 2002 10:42:09 +0000 Subject: * ext/Win32API/Win32API.c (Win32API_Call): RSTRING()->ptr may be NULL. * ext/nkf/nkf.c (rb_nkf_guess): ditto. * ext/readline/readline.c (readline_s_set_completion_append_character): ditto. * ext/socket/socket.c (sock_s_getaddrinfo, sock_s_getnameinfo): ditto. * ext/tcltklib/tcltklib.c (ip_toUTF8, ip_fromUTF8): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2768 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++++ ext/Win32API/Win32API.c | 2 +- ext/nkf/nkf.c | 1 + ext/readline/readline.c | 4 +--- ext/socket/socket.c | 18 ++++++++---------- ext/tcltklib/tcltklib.c | 2 ++ 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 86ce0411c2..dafc3e9ac0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Fri Aug 30 19:35:46 2002 Nobuyoshi Nakada + + * ext/Win32API/Win32API.c (Win32API_Call): use StringValuePtr() to + confirm ptr is not NULL. + + * ext/socket/socket.c (sock_s_getaddrinfo): ditto. + + * ext/socket/socket.c (sock_s_getnameinfo): ditto. + Thu Aug 29 23:34:42 2002 KONISHI Hiromasa * bcc32/MakeFile.sub (sitearch): add. diff --git a/ext/Win32API/Win32API.c b/ext/Win32API/Win32API.c index b9f16e2519..179dd49641 100644 --- a/ext/Win32API/Win32API.c +++ b/ext/Win32API/Win32API.c @@ -249,7 +249,7 @@ Win32API_Call(argc, argv, obj) } else { StringValue(str); rb_str_modify(str); - pParam = RSTRING(str)->ptr; + pParam = StringValuePtr(str) } #if defined(_MSC_VER) || defined(__LCC__) #if defined(_M_IX86) diff --git a/ext/nkf/nkf.c b/ext/nkf/nkf.c index 50723467cd..c71a5119aa 100644 --- a/ext/nkf/nkf.c +++ b/ext/nkf/nkf.c @@ -104,6 +104,7 @@ rb_nkf_guess(obj, src) StringValue(src); p = RSTRING(src)->ptr; pend = p + RSTRING(src)->len; + if (p == pend) return INT2FIX(_UNKNOWN); #define INCR do {\ p++;\ diff --git a/ext/readline/readline.c b/ext/readline/readline.c index 0772d58bcf..2f460ea3e0 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -191,11 +191,9 @@ readline_s_set_completion_append_character(self, str) VALUE self, str; { #ifdef READLINE_21_OR_LATER - if (NIL_P(str)) { + if (NIL_P(str) || !StringValuePtr(str) || !RSTRING(str)->len) { rl_completion_append_character = '\0'; } else { - StringValue(str); - rl_completion_append_character = RSTRING(str)->ptr[0]; } diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 1e91c38c67..2e9731dbc4 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -2133,7 +2133,7 @@ sock_s_getaddrinfo(argc, argv) { VALUE host, port, family, socktype, protocol, flags, ret; char hbuf[1024], pbuf[1024]; - char *hptr, *pptr; + char *hptr, *pptr, *ap; struct addrinfo hints, *res; int error; @@ -2167,13 +2167,12 @@ sock_s_getaddrinfo(argc, argv) else if (FIXNUM_P(family)) { hints.ai_family = FIX2INT(family); } - else { - StringValue(family); - if (strcmp(RSTRING(family)->ptr, "AF_INET") == 0) { + else if ((ap = StringValuePtr(family)) != 0) { + if (strcmp(ap, "AF_INET") == 0) { hints.ai_family = PF_INET; } #ifdef INET6 - else if (strcmp(RSTRING(family)->ptr, "AF_INET6") == 0) { + else if (strcmp(ap, "AF_INET6") == 0) { hints.ai_family = PF_INET6; } #endif @@ -2211,7 +2210,7 @@ sock_s_getnameinfo(argc, argv) int error; struct sockaddr_storage ss; struct sockaddr *sap; - char *ep; + char *ep, *ap; sa = flags = Qnil; rb_scan_args(argc, argv, "11", &sa, &flags); @@ -2287,13 +2286,12 @@ sock_s_getnameinfo(argc, argv) else if (FIXNUM_P(af)) { hints.ai_family = FIX2INT(af); } - else { - StringValue(af); - if (strcmp(RSTRING(af)->ptr, "AF_INET") == 0) { + else if ((ap = StringValuePtr(af)) != 0) { + if (strcmp(ap, "AF_INET") == 0) { hints.ai_family = PF_INET; } #ifdef INET6 - else if (strcmp(RSTRING(af)->ptr, "AF_INET6") == 0) { + else if (ap, "AF_INET6") == 0) { hints.ai_family = PF_INET6; } #endif diff --git a/ext/tcltklib/tcltklib.c b/ext/tcltklib/tcltklib.c index 1b59006009..b75af3fc77 100644 --- a/ext/tcltklib/tcltklib.c +++ b/ext/tcltklib/tcltklib.c @@ -565,6 +565,7 @@ ip_toUTF8(self, str, encodename) StringValue(encodename); StringValue(str); encoding = Tcl_GetEncoding(interp, RSTRING(encodename)->ptr); + if (!RSTRING(str)->len) return str; buf = ALLOCA_N(char,strlen(RSTRING(str)->ptr)+1); strcpy(buf, RSTRING(str)->ptr); @@ -598,6 +599,7 @@ ip_fromUTF8(self, str, encodename) StringValue(encodename); StringValue(str); encoding = Tcl_GetEncoding(interp,RSTRING(encodename)->ptr); + if (!RSTRING(str)->len) return str; buf = ALLOCA_N(char,strlen(RSTRING(str)->ptr)+1); strcpy(buf,RSTRING(str)->ptr); -- cgit v1.2.3