From e36619e7ba1643453004d40fffedeca1e9fb2d11 Mon Sep 17 00:00:00 2001 From: div0 Date: Wed, 22 Apr 2009 19:52:01 +0000 Subject: [PATCH] r6567 | esteel | 2009-04-22 19:52:42 +0200 (Wed, 22 Apr 2009) | 2 lines fix simple vote majority in the menu r6572 | div0 | 2009-04-22 21:46:44 +0200 (Wed, 22 Apr 2009) | 2 lines detect the current fteqcc compiler bug, and abort if the progs are horribly broken because of it git-svn-id: svn://svn.icculus.org/nexuiz/branches/nexuiz-2.0@6573 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- .patchsets | 2 +- data/qcsrc/client/Main.qc | 2 ++ data/qcsrc/common/util.qc | 15 +++++++++++++++ data/qcsrc/common/util.qh | 2 ++ data/qcsrc/menu/menu.qc | 1 + .../qcsrc/menu/nexuiz/dialog_multiplayer_create.c | 2 +- data/qcsrc/server/g_world.qc | 2 ++ 7 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.patchsets b/.patchsets index 2afe1a065..db1473bcc 100644 --- a/.patchsets +++ b/.patchsets @@ -1,2 +1,2 @@ master = svn://svn.icculus.org/nexuiz/trunk -revisions_applied = 1-6536,6541-6549,6552-6565 +revisions_applied = 1-6536,6541-6549,6552-6567,6572-6572 diff --git a/data/qcsrc/client/Main.qc b/data/qcsrc/client/Main.qc index 9b2e2844b..b83eef68a 100644 --- a/data/qcsrc/client/Main.qc +++ b/data/qcsrc/client/Main.qc @@ -56,6 +56,8 @@ void CSQC_Init(void) } #pragma target FTE #endif + + check_unacceptable_compiler_bugs(); float i; CSQC_CheckEngine(); diff --git a/data/qcsrc/common/util.qc b/data/qcsrc/common/util.qc index 9cf24c502..d53096f3f 100644 --- a/data/qcsrc/common/util.qc +++ b/data/qcsrc/common/util.qc @@ -1613,3 +1613,18 @@ vector solve_quadratic(float a, float b, float c) // ax^2 + bx + c = 0 } return v; } + + +float _unacceptable_compiler_bug_1_a(float b, float c) { return b == c; } +float _unacceptable_compiler_bug_1_b() { return 1; } +float _unacceptable_compiler_bug_1_c(float d) { return 2 * d; } +float _unacceptable_compiler_bug_1_d() { return 1; } + +void check_unacceptable_compiler_bugs() +{ + if(cvar("_allow_unacceptable_compiler_bugs")) + return; + tokenize_sane("foo bar"); + if(strcat(argv(0), substring("foo bar", 4, 7 - argv_start_index(1))) == "barbar") + error("fteqcc bug introduced with revision 3178 detected. Please upgrade fteqcc to a later revision, downgrade fteqcc to revision 3177, or pester Spike until he fixes it. You can set _allow_unacceptable_compiler_bugs 1 to skip this check, but expect stuff to be horribly broken then."); +} diff --git a/data/qcsrc/common/util.qh b/data/qcsrc/common/util.qh index a583409e7..50de1cd75 100644 --- a/data/qcsrc/common/util.qh +++ b/data/qcsrc/common/util.qh @@ -166,3 +166,5 @@ vector solve_quadratic(float a, float b, float c); // solution 2 -> y // z = 1 if a real solution exists, 0 if not // if no real solution exists, x contains the real part and y the imaginary part of the complex solutions x+iy and x-iy + +void check_unacceptable_compiler_bugs(); diff --git a/data/qcsrc/menu/menu.qc b/data/qcsrc/menu/menu.qc index 06b538b6b..c3f22cd6b 100644 --- a/data/qcsrc/menu/menu.qc +++ b/data/qcsrc/menu/menu.qc @@ -21,6 +21,7 @@ void SUB_Null() { }; void() m_init = { dprint_load(); + check_unacceptable_compiler_bugs(); } void UpdateConWidthHeight() diff --git a/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c b/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c index 704b7c7df..da8f4327c 100644 --- a/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c +++ b/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c @@ -150,7 +150,7 @@ void fillNexuizServerCreateTab(entity me) e.addValue(e, "9 choices", "9"); e.configureNexuizTextSliderValues(e); me.TR(me); - me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "sv_vote_simple_majority", "Simple majority wins vcall")); + me.TD(me, 1, 3, e = makeNexuizCheckBoxEx(0.5, 0, "sv_vote_simple_majority_factor", "Simple majority wins vcall")); me.TR(me); me.TR(me); me.TD(me, 1, 1, e = makeNexuizButton("Mutators...", '0 0 0')); diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 571a1d41c..012493e62 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -386,6 +386,8 @@ void spawnfunc_worldspawn (void) remove = remove_safely; // during spawning, watch what you remove! + check_unacceptable_compiler_bugs(); + if(cvar_string("cvar_check_default") != "bypass") { if(cvar_string("cvar_check_default") != CVAR_CHECK_DEFAULT) -- 2.39.2