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

ruby-changes:69679

From: Nobuyoshi <ko1@a...>
Date: Wed, 10 Nov 2021 16:55:04 +0900 (JST)
Subject: [ruby-changes:69679] 46e46eafd4 (master): size_t is not for file size

https://git.ruby-lang.org/ruby.git/commit/?id=46e46eafd4

From 46e46eafd48c474ae8be0dd7d11bc43725de3d02 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Wed, 10 Nov 2021 16:41:26 +0900
Subject: size_t is not for file size

---
 file.c                              |   5 +-
 include/ruby/internal/intern/file.h |   2 +-
 include/ruby/io/buffer.h            |   6 +-
 io.c                                |   6 +-
 io_buffer.c                         | 178 +++++++++++++++++++++++-------------
 5 files changed, 129 insertions(+), 68 deletions(-)

diff --git a/file.c b/file.c
index 4629a9aee89..b073051944f 100644
--- a/file.c
+++ b/file.c
@@ -2515,7 +2515,8 @@ rb_file_birthtime(VALUE obj) https://github.com/ruby/ruby/blob/trunk/file.c#L2515
  *
  */
 
-size_t rb_file_size(VALUE file)
+off_t
+rb_file_size(VALUE file)
 {
     rb_io_t *fptr;
     struct stat st;
@@ -2535,7 +2536,7 @@ size_t rb_file_size(VALUE file) https://github.com/ruby/ruby/blob/trunk/file.c#L2536
 static VALUE
 file_size(VALUE self)
 {
-    return RB_SIZE2NUM(rb_file_size(self));
+    return OFFT2NUM(rb_file_size(self));
 }
 
 static int
diff --git a/include/ruby/internal/intern/file.h b/include/ruby/internal/intern/file.h
index ce676bfd090..43f1fd7c602 100644
--- a/include/ruby/internal/intern/file.h
+++ b/include/ruby/internal/intern/file.h
@@ -187,7 +187,7 @@ RBIMPL_ATTR_PURE() https://github.com/ruby/ruby/blob/trunk/include/ruby/internal/intern/file.h#L187
  */
 int rb_is_absolute_path(const char *path);
 
-size_t rb_file_size(VALUE file);
+off_t rb_file_size(VALUE file);
 
 RBIMPL_SYMBOL_EXPORT_END()
 
diff --git a/include/ruby/io/buffer.h b/include/ruby/io/buffer.h
index 053e7e17f97..c6132c572a6 100644
--- a/include/ruby/io/buffer.h
+++ b/include/ruby/io/buffer.h
@@ -1,3 +1,5 @@ https://github.com/ruby/ruby/blob/trunk/include/ruby/io/buffer.h#L1
+#ifndef RUBY_IO_BUFFER_T
+#define RUBY_IO_BUFFER_T 1
 /**
  * @file
  * @author     Samuel Williams
@@ -54,7 +56,7 @@ enum rb_io_buffer_endian { https://github.com/ruby/ruby/blob/trunk/include/ruby/io/buffer.h#L56
     RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
 #endif
 
-    RB_IO_BUFFER_NETWORK_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
+    RB_IO_BUFFER_NETWORK_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN
 };
 
 VALUE rb_io_buffer_new(void *base, size_t size, enum rb_io_buffer_flags flags);
@@ -72,3 +74,5 @@ void rb_io_buffer_resize(VALUE self, size_t size, size_t preserve); https://github.com/ruby/ruby/blob/trunk/include/ruby/io/buffer.h#L74
 void rb_io_buffer_clear(VALUE self, uint8_t value, size_t offset, size_t length);
 
 RUBY_SYMBOL_EXPORT_END
+
+#endif  /* RUBY_IO_BUFFER_T */
diff --git a/io.c b/io.c
index 81f7d8ecb67..8a4df453ace 100644
--- a/io.c
+++ b/io.c
@@ -2584,13 +2584,15 @@ rb_io_fileno(VALUE io) https://github.com/ruby/ruby/blob/trunk/io.c#L2584
     return INT2FIX(fd);
 }
 
-int rb_io_descriptor(VALUE io)
+int
+rb_io_descriptor(VALUE io)
 {
     if (RB_TYPE_P(io, T_FILE)) {
         rb_io_t *fptr = RFILE(io)->fptr;
         rb_io_check_closed(fptr);
         return fptr->fd;
-    } else {
+    }
+    else {
         return RB_NUM2INT(rb_funcall(io, id_fileno, 0));
     }
 }
diff --git a/io_buffer.c b/io_buffer.c
index 521d9d8ea95..f53b140130a 100644
--- a/io_buffer.c
+++ b/io_buffer.c
@@ -34,7 +34,8 @@ struct rb_io_buffer { https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L34
     VALUE source;
 };
 
-static inline void* io_buffer_map_memory(size_t size)
+static inline void *
+io_buffer_map_memory(size_t size)
 {
 #if defined(_WIN32)
     void * base = VirtualAlloc(0, size, MEM_COMMIT, PAGE_READWRITE);
@@ -53,8 +54,8 @@ static inline void* io_buffer_map_memory(size_t size) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L54
     return base;
 }
 
-static
-void io_buffer_map_file(struct rb_io_buffer *data, int descriptor, size_t size, off_t offset, enum rb_io_buffer_flags flags)
+static void
+io_buffer_map_file(struct rb_io_buffer *data, int descriptor, size_t size, off_t offset, enum rb_io_buffer_flags flags)
 {
 #if defined(_WIN32)
     HANDLE file = (HANDLE)_get_osfhandle(descriptor);
@@ -64,7 +65,8 @@ void io_buffer_map_file(struct rb_io_buffer *data, int descriptor, size_t size, https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L65
 
     if (flags & RB_IO_BUFFER_IMMUTABLE) {
         data->flags |= RB_IO_BUFFER_IMMUTABLE;
-    } else {
+    }
+    else {
         protect = PAGE_READWRITE;
         access = FILE_MAP_WRITE;
     }
@@ -90,13 +92,15 @@ void io_buffer_map_file(struct rb_io_buffer *data, int descriptor, size_t size, https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L92
 
     if (flags & RB_IO_BUFFER_IMMUTABLE) {
         data->flags |= RB_IO_BUFFER_IMMUTABLE;
-    } else {
+    }
+    else {
         protect |= PROT_WRITE;
     }
 
     if (flags & RB_IO_BUFFER_PRIVATE) {
         data->flags |= RB_IO_BUFFER_PRIVATE;
-    } else {
+    }
+    else {
         access |= MAP_SHARED;
     }
 
@@ -113,7 +117,8 @@ void io_buffer_map_file(struct rb_io_buffer *data, int descriptor, size_t size, https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L117
     data->flags |= RB_IO_BUFFER_MAPPED;
 }
 
-static inline void io_buffer_unmap(void* base, size_t size)
+static inline void
+io_buffer_unmap(void* base, size_t size)
 {
 #ifdef _WIN32
     VirtualFree(base, 0, MEM_RELEASE);
@@ -122,7 +127,8 @@ static inline void io_buffer_unmap(void* base, size_t size) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L127
 #endif
 }
 
-static void io_buffer_experimental(void)
+static void
+io_buffer_experimental(void)
 {
     static int warned = 0;
 
@@ -137,7 +143,8 @@ static void io_buffer_experimental(void) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L143
     }
 }
 
-static void io_buffer_initialize(struct rb_io_buffer *data, void *base, size_t size, enum rb_io_buffer_flags flags, VALUE source)
+static void
+io_buffer_initialize(struct rb_io_buffer *data, void *base, size_t size, enum rb_io_buffer_flags flags, VALUE source)
 {
     io_buffer_experimental();
 
@@ -146,10 +153,12 @@ static void io_buffer_initialize(struct rb_io_buffer *data, void *base, size_t s https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L153
 
     if (base) {
         data->base = base;
-    } else {
+    }
+    else {
         if (data->flags & RB_IO_BUFFER_INTERNAL) {
             data->base = calloc(data->size, 1);
-        } else if (data->flags & RB_IO_BUFFER_MAPPED) {
+        }
+        else if (data->flags & RB_IO_BUFFER_MAPPED) {
             data->base = io_buffer_map_memory(data->size);
         }
     }
@@ -161,7 +170,8 @@ static void io_buffer_initialize(struct rb_io_buffer *data, void *base, size_t s https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L170
     data->source = source;
 }
 
-static int io_buffer_free(struct rb_io_buffer *data)
+static int
+io_buffer_free(struct rb_io_buffer *data)
 {
     if (data->base) {
         if (data->flags & RB_IO_BUFFER_INTERNAL) {
@@ -187,13 +197,15 @@ static int io_buffer_free(struct rb_io_buffer *data) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L197
     return 0;
 }
 
-void rb_io_buffer_type_mark(void *_data)
+void
+rb_io_buffer_type_mark(void *_data)
 {
     struct rb_io_buffer *data = _data;
     rb_gc_mark(data->source);
 }
 
-void rb_io_buffer_type_free(void *_data)
+void
+rb_io_buffer_type_free(void *_data)
 {
     struct rb_io_buffer *data = _data;
 
@@ -202,7 +214,8 @@ void rb_io_buffer_type_free(void *_data) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L214
     free(data);
 }
 
-size_t rb_io_buffer_type_size(const void *_data)
+size_t
+rb_io_buffer_type_size(const void *_data)
 {
     const struct rb_io_buffer *data = _data;
     size_t total = sizeof(struct rb_io_buffer);
@@ -225,7 +238,8 @@ static const rb_data_type_t rb_io_buffer_type = { https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L238
     .flags = RUBY_TYPED_FREE_IMMEDIATELY,
 };
 
-VALUE rb_io_buffer_type_allocate(VALUE self)
+VALUE
+rb_io_buffer_type_allocate(VALUE self)
 {
     struct rb_io_buffer *data = NULL;
     VALUE instance = TypedData_Make_Struct(self, struct rb_io_buffer, &rb_io_buffer_type, data);
@@ -238,7 +252,8 @@ VALUE rb_io_buffer_type_allocate(VALUE self) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L252
     return instance;
 }
 
-VALUE rb_io_buffer_new(void *base, size_t size, enum rb_io_buffer_flags flags)
+VALUE
+rb_io_buffer_new(void *base, size_t size, enum rb_io_buffer_flags flags)
 {
     VALUE instance = rb_io_buffer_type_allocate(rb_cIOBuffer);
 
@@ -250,7 +265,8 @@ VALUE rb_io_buffer_new(void *base, size_t size, enum rb_io_buffer_flags flags) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L265
     return instance;
 }
 
-VALUE rb_io_buffer_map(VALUE io, size_t size, off_t offset, enum rb_io_buffer_flags flags)
+VALUE
+rb_io_buffer_map(VALUE io, size_t size, off_t offset, enum rb_io_buffer_flags flags)
 {
     VALUE instance = rb_io_buffer_type_allocate(rb_cIOBuffer);
 
@@ -264,8 +280,8 @@ VALUE rb_io_buffer_map(VALUE io, size_t size, off_t offset, enum rb_io_buffer_fl https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L280
     return instance;
 }
 
-static
-VALUE io_buffer_map(int argc, VALUE *argv, VALUE klass)
+static VALUE
+io_buffer_map(int argc, VALUE *argv, VALUE klass)
 {
     if (argc < 1 || argc > 4) {
         rb_error_arity(argc, 2, 4);
@@ -276,7 +292,8 @@ VALUE io_buffer_map(int argc, VALUE *argv, VALUE klass) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L292
     size_t size;
     if (argc >= 2) {
         size = RB_NUM2SIZE(argv[1]);
-    } else {
+    }
+    else {
         size = rb_file_size(io);
     }
 
@@ -293,7 +310,8 @@ VALUE io_buffer_map(int argc, VALUE *argv, VALUE klass) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L310
     return rb_io_buffer_map(io, size, offset, flags);
 }
 
-VALUE rb_io_buffer_initialize(int argc, VALUE *argv, VALUE self)
+VALUE
+rb_io_buffer_initialize(int argc, VALUE *argv, VALUE self)
 {
     if (argc < 1 || argc > 2) {
         rb_error_arity(argc, 1, 2);
@@ -307,10 +325,12 @@ V (... truncated)

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

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