summaryrefslogtreecommitdiffstats
path: root/input.c
diff options
context:
space:
mode:
authornicm <nicm>2019-05-20 05:35:46 +0000
committernicm <nicm>2019-05-20 05:35:46 +0000
commit6e0c663a895fc4d24b9745675cd45f3d8b457680 (patch)
tree8406c3d08faa48a16e897dcb5bf6818937d5d4a6 /input.c
parent82ebd98c5f874cd10365d9563feccfbb8da188f4 (diff)
Fix the color space parameter in RGB SGR, from Brad Town.
Diffstat (limited to 'input.c')
-rw-r--r--input.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/input.c b/input.c
index a9f0acc9..4095c05d 100644
--- a/input.c
+++ b/input.c
@@ -1938,23 +1938,25 @@ input_csi_dispatch_sgr_colon(struct input_ctx *ictx, u_int i)
}
return;
}
- if (p[0] != 38 && p[0] != 48)
+ if (n < 2 || (p[0] != 38 && p[0] != 48))
return;
- if (p[1] == -1)
- i = 2;
- else
- i = 1;
- switch (p[i]) {
+ switch (p[1]) {
case 2:
- if (n < i + 4)
+ if (n < 3)
+ break;
+ if (n == 5)
+ i = 2;
+ else
+ i = 3;
+ if (n < i + 3)
break;
- input_csi_dispatch_sgr_rgb_do(ictx, p[0], p[i + 1], p[i + 2],
- p[i + 3]);
+ input_csi_dispatch_sgr_rgb_do(ictx, p[0], p[i], p[i + 1],
+ p[i + 2]);
break;
case 5:
- if (n < i + 2)
+ if (n < 3)
break;
- input_csi_dispatch_sgr_256_do(ictx, p[0], p[i + 1]);
+ input_csi_dispatch_sgr_256_do(ictx, p[0], p[2]);
break;
}
}