sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit 011df855e96134cdb997998d9699ca5c0a54853f
parent 1db000a1932741ef0e304453da4ded5c02b70d42
Author: Evan Gates <evan.gates@gmail.com>
Date:   Fri Jul 15 09:57:50 -0700

subtract 'a' from indices for marks

Given:

static int marks['z' - 'a'];
marks[c];

In this case c is the character read and index is out of bounds. We
need marks[c - 'a']

While playing around with optimization settings gcc caught caught this.

Also fix one check for c, change from isalpha to islower.

-emg

From 2cc36818283e9068576c1042690c016a81b709a3 Mon Sep 17 00:00:00 2001
From: Evan Gates <evan.gates@gmail.com>
Date: Fri, 15 Jul 2016 09:52:39 -0700
Subject: [PATCH] fix marks indexing

Diffstat:
ed.c | 6+++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/ed.c b/ed.c @@ -478,9 +478,9 @@ linenum(int *line) break; case '\'': skipblank(); - if (!isalpha(c = input())) + if (!islower(c = input())) error("invalid mark character"); - if (!(ln = marks[c])) + if (!(ln = marks[c - 'a'])) error("invalid address"); break; case '$': @@ -1191,7 +1191,7 @@ repeat: error("invalid mark character"); chkprint(1); deflines(curln, curln); - marks[c] = line1; + marks[c - 'a'] = line1; break; case 'P': if (nlines > 0)