From: Dale Weiler Date: Fri, 30 Jan 2015 05:20:41 +0000 (-0500) Subject: Merge branch 'cleanup' of github.com:graphitemaster/gmqcc into cleanup X-Git-Tag: xonotic-v0.8.2~9^2~1 X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=commitdiff_plain;h=90b5a6538a10f60d08ee3059b8f70e4e076dc30d;hp=9335bc2f4fa5ab4d5b8e8f3320e6e42a9b3455ac Merge branch 'cleanup' of github.com:graphitemaster/gmqcc into cleanup --- diff --git a/fold.cpp b/fold.cpp index 306e5ca..0f86117 100644 --- a/fold.cpp +++ b/fold.cpp @@ -1335,11 +1335,15 @@ ast_expression *fold::op_cmp(ast_value *a, ast_value *b, bool ne) { float la = immvalue_float(a); float lb = immvalue_float(b); check_inexact_float(a, b); - return (ast_expression*)m_imm_float[!(ne ? la == lb : la != lb)]; - } if (isvector(a) && isvector(b)) { + return (ast_expression*)m_imm_float[ne ? la != lb : la == lb]; + } else if (isvector(a) && isvector(b)) { vec3_t la = immvalue_vector(a); vec3_t lb = immvalue_vector(b); - return (ast_expression*)m_imm_float[!(ne ? vec3_cmp(la, lb) : !vec3_cmp(la, lb))]; + bool compare = vec3_cmp(la, lb); + return (ast_expression*)m_imm_float[ne ? !compare : compare]; + } else if (isstring(a) && isstring(b)) { + bool compare = !strcmp(immvalue_string(a), immvalue_string(b)); + return (ast_expression*)m_imm_float[ne ? !compare : compare]; } } return nullptr;