When we discard the content of an undo buffer is because we don't need it anymore, and it means that we don't care about the modify state of the buffer so we can reset the modflag in clearundo(), and remove this assignation each time clearundo() is called. --- ed.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/ed.c b/ed.c index 623c6b4..751e973 100644 --- a/ed.c +++ b/ed.c @@ -247,6 +247,7 @@ clearundo(void) free(udata.vec); udata.vec = NULL; newcmd = udata.nr = udata.cap = 0; + modflag = 0; } static void @@ -342,7 +343,6 @@ setscratch() error("input/output error in scratch file"); relink(k, k, k, k); clearundo(); - modflag = 0; } static void @@ -1211,7 +1211,6 @@ repeat: deflines(curln, curln); doread(savfname); clearundo(); - modflag = 0; break; default: error("unknown command"); -- 2.1.4