From 4902d310c3ead8cc6b633de5bbd630586574bd68 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Fri, 2 Jan 2026 15:53:27 +0200 Subject: [PATCH] Update package version to 9.1.2041 --- pkg.info | 4 +- source-files/fix-building-with-ruby-4.0.patch | 81 ------------------- source.sh | 2 - 3 files changed, 2 insertions(+), 85 deletions(-) delete mode 100644 source-files/fix-building-with-ruby-4.0.patch diff --git a/pkg.info b/pkg.info index 58db6c3..97aed3e 100644 --- a/pkg.info +++ b/pkg.info @@ -1,6 +1,6 @@ name: vim description: A highly configurable text editor -version: 9.1.2037 +version: 9.1.2041 revision: 1 url: https://www.vim.org/ license: vim @@ -35,4 +35,4 @@ downloads: - url: https://github.com/vim/vim/archive/refs/tags/v${BPM_PKG_VERSION}.tar.gz extract_to: ${BPM_SOURCE} extract_strip_components: 1 - checksum: d04ee71b2578a7e33e8294386f698539182707dc1d901752635dda94e6e16e02 + checksum: 6b42789c13137f538e5fa455c08f1b4ccf55ae58dc0d5354bd9586d2069d569e diff --git a/source-files/fix-building-with-ruby-4.0.patch b/source-files/fix-building-with-ruby-4.0.patch deleted file mode 100644 index a46d6a2..0000000 --- a/source-files/fix-building-with-ruby-4.0.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 32a8986a1916b672acd6992bd646af0aa409960b Mon Sep 17 00:00:00 2001 -From: Yee Cheng Chin -Date: Thu, 1 Jan 2026 22:42:53 -0800 -Subject: [PATCH] Fix Ruby 4.0 dynamic builds correctly by inlining - rb_check_typeddata - -Ruby 4.0 broke Vim compilation in dynamic builds. That's because the -function `rb_check_typeddata` is now used in an inline function defined -in Ruby headers, which causes it to link against the lib statically -rather than using the one we load in dynamically -(`dll_rb_check_typeddata`) as we only remap it later (after the Ruby -header include). - -A previous fix (v9.1.2036) did a wrong fix by stubbing in the actual -inline function `rbimpl_check_typeddata` instead. This does not work -because the inline function is not part of the dynamic lib and therefore -it's not possible to load it in dynamically (the patch also did not -actually attempt to load in the stub). With that patch, Vim would -crash when this function is used as the function pointer is null. - -Fix this properly by reverting the previous change, and simply stub -`rb_check_typeddata` using similar mechanisms the file had already set -up for similar situations. - -Fix #18884 ---- - src/if_ruby.c | 20 +++++++++++--------- - 1 file changed, 11 insertions(+), 9 deletions(-) - -diff --git a/src/if_ruby.c b/src/if_ruby.c -index 49fdc34dd5316b..913936174a5e01 100644 ---- a/src/if_ruby.c -+++ b/src/if_ruby.c -@@ -73,6 +73,11 @@ - # define rb_num2int rb_num2int_stub - # endif - -+# if RUBY_VERSION >= 20 -+// USE_TYPEDDATA is not defined yet. We just check for 2.0. -+# define rb_check_typeddata rb_check_typeddata_stub -+#endif -+ - # if RUBY_VERSION == 21 - // Ruby 2.1 adds new GC called RGenGC and RARRAY_PTR uses - // rb_gc_writebarrier_unprotect_promoted if USE_RGENGC -@@ -243,12 +248,6 @@ static int ruby_convert_to_vim_value(VALUE val, typval_T *rettv); - # if RUBY_VERSION < 30 - # define rb_check_type dll_rb_check_type - # endif --# ifdef USE_TYPEDDATA --# if RUBY_VERSION >= 40 --# define rbimpl_check_typeddata dll_rbimpl_check_typeddata --# endif --# define rb_check_typeddata dll_rb_check_typeddata --# endif - # define rb_class_path dll_rb_class_path - # ifdef USE_TYPEDDATA - # if RUBY_VERSION >= 23 -@@ -376,9 +375,6 @@ VALUE *dll_rb_cTrueClass; - static VALUE (*dll_rb_class_new_instance) (int,VALUE*,VALUE); - static void (*dll_rb_check_type) (VALUE,int); - # ifdef USE_TYPEDDATA --# if RUBY_VERSION >= 40 --static void *(*dll_rbimpl_check_typeddata) (VALUE,const rb_data_type_t *); --# endif - static void *(*dll_rb_check_typeddata) (VALUE,const rb_data_type_t *); - # endif - static VALUE (*dll_rb_class_path) (VALUE); -@@ -607,6 +603,12 @@ rb_unexpected_type_stub(VALUE self, int t) - dll_rb_unexpected_type(self, t); - } - # endif -+# ifdef USE_TYPEDDATA -+void *rb_check_typeddata_stub(VALUE obj, const rb_data_type_t *data_type) -+{ -+ return dll_rb_check_typeddata(obj, data_type); -+} -+# endif - # endif // ifndef PROTO - - static HINSTANCE hinstRuby = NULL; // Instance of ruby.dll diff --git a/source.sh b/source.sh index 8ac985f..a9b1690 100644 --- a/source.sh +++ b/source.sh @@ -6,8 +6,6 @@ # This function is used for putting downloaded files to the correct location or applying patches prepare() { cd "$BPM_SOURCE" - # Fix building with ruby 4.0 - patch -p1 -i "$BPM_WORKDIR"/fix-building-with-ruby-4.0.patch # Define place for global vimrc file sed -E 's|^.*(#define SYS_.*VIMRC_FILE.*").*$|\1|g' -i src/feature.h