[前][次][番号順一覧][スレッド一覧]

ruby-changes:18636

From: nobu <ko1@a...>
Date: Thu, 27 Jan 2011 08:23:07 +0900 (JST)
Subject: [ruby-changes:18636] Ruby:r30660 (trunk): * dln_find.c (dln_find_1): use rb_warning and return immediately

nobu	2011-01-27 08:22:54 +0900 (Thu, 27 Jan 2011)

  New Revision: 30660

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30660

  Log:
    * dln_find.c (dln_find_1): use rb_warning and return immediately
      if fname is longer than buffer.

  Modified files:
    trunk/ChangeLog
    trunk/dln_find.c
    trunk/version.h

Index: dln_find.c
===================================================================
--- dln_find.c	(revision 30659)
+++ dln_find.c	(revision 30660)
@@ -15,10 +15,14 @@
 #define dln_memerror rb_memerror
 #define dln_exit rb_exit
 #define dln_loaderror rb_loaderror
+#define dln_warning rb_warning
+#define dln_warning_arg
 #else
 #define dln_notimplement --->>> dln not implemented <<<---
 #define dln_memerror abort
 #define dln_exit exit
+#define dln_warning fprintf
+#define dln_warning_arg stderr,
 static void dln_loaderror(const char *format, ...);
 #endif
 #include "dln.h"
@@ -141,16 +145,23 @@
 
     static const char pathname_too_long[] = "openpath: pathname too long (ignored)\n\
 \tDirectory \"%.*s\"%s\n\tFile \"%.*s\"%s\n";
-#define PATHNAME_TOO_LONG() fprintf(stderr, pathname_too_long, \
-				    ((bp - fbuf) > 100 ? 100 : (int)(bp - fbuf)), fbuf, \
-				    ((bp - fbuf) > 100 ? "..." : ""), \
-				    (fnlen > 100 ? 100 : (int)fnlen), fname, \
-				    (fnlen > 100 ? "..." : ""))
+#define PATHNAME_TOO_LONG() dln_warning(dln_warning_arg pathname_too_long, \
+					((bp - fbuf) > 100 ? 100 : (int)(bp - fbuf)), fbuf, \
+					((bp - fbuf) > 100 ? "..." : ""), \
+					(fnlen > 100 ? 100 : (int)fnlen), fname, \
+					(fnlen > 100 ? "..." : ""))
 
 #define RETURN_IF(expr) if (expr) return (char *)fname;
 
     RETURN_IF(!fname);
     fnlen = strlen(fname);
+    if (fnlen >= size) {
+	dln_warning(dln_warning_arg
+		    "openpath: pathname too long (ignored)\n\tFile \"%.*s\"%s\n",
+		    (fnlen > 100 ? 100 : (int)fnlen), fname,
+		    (fnlen > 100 ? "..." : ""));
+	return NULL;
+    }
 #ifdef DOSISH
 # ifndef CharNext
 # define CharNext(p) ((p)+1)
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30659)
+++ ChangeLog	(revision 30660)
@@ -1,3 +1,8 @@
+Thu Jan 27 08:22:49 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* dln_find.c (dln_find_1): use rb_warning and return immediately
+	  if fname is longer than buffer.
+
 Wed Jan 26 22:57:30 2011  CHIKANAGA Tomoyuki  <nagachika00@g...>
 
 	* class.c (clone_method): add GC guard to prevent intermediate
Index: version.h
===================================================================
--- version.h	(revision 30659)
+++ version.h	(revision 30660)
@@ -1,11 +1,11 @@
 #define RUBY_VERSION "1.9.3"
-#define RUBY_RELEASE_DATE "2011-01-26"
+#define RUBY_RELEASE_DATE "2011-01-27"
 #define RUBY_PATCHLEVEL -1
 #define RUBY_BRANCH_NAME "trunk"
 
 #define RUBY_RELEASE_YEAR 2011
 #define RUBY_RELEASE_MONTH 1
-#define RUBY_RELEASE_DAY 26
+#define RUBY_RELEASE_DAY 27
 
 #include "ruby/version.h"
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]