From 0d34dcf8f4b303a9ea1d9f18df421fac5714a040 Mon Sep 17 00:00:00 2001 From: Martin Nilsson <nilsson@opera.com> Date: Sun, 10 Aug 2014 21:05:23 +0200 Subject: [PATCH] Cap compatibility mode to lowest supported. --- lib/master.pike.in | 11 +++++++++++ src/builtin_functions.c | 3 +++ src/version.h | 3 +++ 3 files changed, 17 insertions(+) diff --git a/lib/master.pike.in b/lib/master.pike.in index 29e3bb5ede..1cbf53f660 100644 --- a/lib/master.pike.in +++ b/lib/master.pike.in @@ -3760,6 +3760,14 @@ void _main(array(string(0..255)) orig_argv) } cur_compat_ver = Version (compat_major, compat_minor); + if (cur_compat_ver < lowestcompat) + { + werror("This Pike only supports compatibility down to %s.\n", + (string)lowestcompat); + cur_compat_ver = lowestcompat; + compat_major = lowestcompat->major; + compat_minor = lowestcompat->minor; + } if (compat_major != -1) { object compat_master = get_compat_master (compat_major, compat_minor); @@ -5873,6 +5881,9 @@ class Version //! Version information about the current Pike version. Version currentversion = Version(__REAL_MAJOR__, __REAL_MINOR__); +Version lowestcompat = Version(Builtin.LOWEST_COMPAT_MAJOR, + Builtin.LOWEST_COMPAT_MINOR); + mapping(Version:CompatResolver) compat_handler_cache = ([ currentversion:this_object(), ]); diff --git a/src/builtin_functions.c b/src/builtin_functions.c index bc735083bb..8037dcf96c 100644 --- a/src/builtin_functions.c +++ b/src/builtin_functions.c @@ -10374,6 +10374,9 @@ void init_builtin_efuns(void) ADD_INT_CONSTANT ("DESTRUCT_NO_REFS", DESTRUCT_NO_REFS, 0); ADD_INT_CONSTANT ("DESTRUCT_GC", DESTRUCT_GC, 0); ADD_INT_CONSTANT ("DESTRUCT_CLEANUP", DESTRUCT_CLEANUP, 0); + + ADD_INT_CONSTANT("LOWEST_COMPAT_MAJOR", LOWEST_COMPAT_MAJOR, 0); + ADD_INT_CONSTANT("LOWEST_COMPAT_MINOR", LOWEST_COMPAT_MINOR, 0); } void exit_builtin_efuns(void) diff --git a/src/version.h b/src/version.h index b49c5e1a21..988f4e159a 100644 --- a/src/version.h +++ b/src/version.h @@ -8,6 +8,9 @@ #define PIKE_MINOR_VERSION 0 #define PIKE_BUILD_VERSION 3 +#define LOWEST_COMPAT_MAJOR 0 +#define LOWEST_COMPAT_MINOR 5 + /* Prototypes begin here */ PMOD_EXPORT void f_version(INT32 args); void push_compact_version(); -- GitLab