diff --git a/ext/java/org/jruby/ext/stringio/StringIO.java b/ext/java/org/jruby/ext/stringio/StringIO.java index 1628645..076b663 100644 --- a/ext/java/org/jruby/ext/stringio/StringIO.java +++ b/ext/java/org/jruby/ext/stringio/StringIO.java @@ -75,6 +75,9 @@ static class StringIOData { } StringIOData ptr; + private static final String + STRINGIO_VERSION = "3.0.9"; + private static final int STRIO_READABLE = ObjectFlags.registry.newFlag(StringIO.class); private static final int STRIO_WRITABLE = ObjectFlags.registry.newFlag(StringIO.class); private static final int STRIO_READWRITE = (STRIO_READABLE | STRIO_WRITABLE); @@ -83,7 +86,7 @@ public static RubyClass createStringIOClass(final Ruby runtime) { RubyClass stringIOClass = runtime.defineClass( "StringIO", runtime.getObject(), StringIO::new); - RubyString version = RubyString.newString(runtime, "3.0.9"); + RubyString version = RubyString.newString(runtime, STRINGIO_VERSION); stringIOClass.defineConstant("VERSION", version); stringIOClass.defineAnnotatedMethods(StringIO.class); diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index d5753a9..43ce0d6 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -12,7 +12,8 @@ **********************************************************************/ -#define STRINGIO_VERSION "3.0.9" +static const char *const +STRINGIO_VERSION = "3.0.9"; #include "ruby.h" #include "ruby/io.h" diff --git a/rakelib/version.rake b/rakelib/version.rake index b2e4b61..97b18bd 100644 --- a/rakelib/version.rake +++ b/rakelib/version.rake @@ -2,13 +2,13 @@ class << (helper = Bundler::GemHelper.instance) C_SOURCE_PATH = "ext/stringio/stringio.c" JAVA_SOURCE_PATH = "ext/java/org/jruby/ext/stringio/StringIO.java" def update_source_version - c_source = File.read(C_SOURCE_PATH) - c_source.sub!(/^#define\s+STRINGIO_VERSION\s+\K".*"/) {version.to_s.dump} - File.write(C_SOURCE_PATH, c_source) - - java_source = File.read(JAVA_SOURCE_PATH) - java_source.sub!(/version = RubyString\.newString\(runtime, \K".*"/) {version.to_s.dump} - File.write(JAVA_SOURCE_PATH, java_source) + v = version.to_s + [C_SOURCE_PATH, JAVA_SOURCE_PATH].each do |path| + source = File.read(path) + if source.sub!(/^\s*STRINGIO_VERSION\s*=\s*"\K.*(?=")/) {break if $& == v; v} + File.write(path, source) + end + end end def commit_bump diff --git a/stringio.gemspec b/stringio.gemspec index c73fc3a..8c950f8 100644 --- a/stringio.gemspec +++ b/stringio.gemspec @@ -4,7 +4,7 @@ source_version = ["", "ext/stringio/"].find do |dir| begin break File.open(File.join(__dir__, "#{dir}stringio.c")) {|f| - f.gets("\n#define STRINGIO_VERSION ") + f.gets("\nSTRINGIO_VERSION ") f.gets[/\s*"(.+)"/, 1] } rescue Errno::ENOENT