From a23e43d06246f3b57f0c3f536a20d579ac1d71f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Wed, 22 May 2013 18:49:55 +0200
Subject: [PATCH] Operators: Improved type for `+() and `-() with respect to
 strings.

The resulting string width should now be correct in some common cases.

Fixes [bug 6785].
---
 src/operators.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/operators.c b/src/operators.c
index f343923b80..9e40ffb91f 100644
--- a/src/operators.c
+++ b/src/operators.c
@@ -5785,8 +5785,8 @@ void init_operators(void)
 		 tIfnot(tFuncV(tNone, tNot(tFlt), tMix),
 			tFuncV(tOr(tInt,tFlt),tOr(tInt,tFlt),tFlt)),
 		 tIfnot(tFuncV(tNone, tNot(tStr), tMix),
-			tFuncV(tOr3(tStr,tInt,tFlt),
-			       tOr3(tStr,tInt,tFlt),tStr)),
+			tFuncV(tOr3(tSetvar(0, tStr),tInt,tFlt),
+			       tOr3(tSetvar(1, tStr),tInt,tFlt),tOr(tVar(0),tVar(1)))),
 		 tFuncV(tSetvar(0,tArray),tSetvar(1,tArray),
 			tOr(tVar(0),tVar(1))),
 		 tFuncV(tSetvar(0,tMapping),tSetvar(1,tMapping),
@@ -5806,7 +5806,7 @@ void init_operators(void)
 			tOr3(tMapping,tArray,tMultiset),
 			tMap(tVar(1),tVar(2))),
 		 tFunc(tSet(tSetvar(3,tMix)) tMultiset,tSet(tVar(3))),
-		 tFuncV(tStr,tStr,tStr)),
+		 tFuncV(tSetvar(0,tStr),tStr,tVar(0))),
 	    OPT_TRY_OPTIMIZE,0,generate_minus);
 
 /*
-- 
GitLab