Browse Source

Plan 9 from Bell Labs 2004-01-09

David du Colombier 20 years ago
parent
commit
c68f64c865

+ 4 - 4
dist/replica/plan9.db

@@ -6774,9 +6774,9 @@ sys/src/cmd/acme/acme.c - 664 sys sys 1035591507 18969
 sys/src/cmd/acme/addr.c - 664 sys sys 1018553456 4787
 sys/src/cmd/acme/buff.c - 664 sys sys 1014926092 5573
 sys/src/cmd/acme/cols.c - 664 sys sys 1032462024 11122
-sys/src/cmd/acme/dat.h - 664 sys sys 1067723164 10956
+sys/src/cmd/acme/dat.h - 664 sys sys 1073566949 10976
 sys/src/cmd/acme/disk.c - 664 sys sys 1014926093 2151
-sys/src/cmd/acme/ecmd.c - 664 sys sys 1067723163 24152
+sys/src/cmd/acme/ecmd.c - 664 sys sys 1073566949 24288
 sys/src/cmd/acme/edit.c - 664 sys sys 1015701171 12055
 sys/src/cmd/acme/edit.h - 664 sys sys 969500816 2466
 sys/src/cmd/acme/elog.c - 664 sys sys 1067723163 7241
@@ -6791,8 +6791,8 @@ sys/src/cmd/acme/rows.c - 664 sys sys 1068140772 14637
 sys/src/cmd/acme/scrl.c - 664 sys sys 1014926095 3072
 sys/src/cmd/acme/text.c - 664 sys sys 1072729041 26813
 sys/src/cmd/acme/time.c - 664 sys sys 1014926095 1783
-sys/src/cmd/acme/util.c - 664 sys sys 1072972297 6436
-sys/src/cmd/acme/wind.c - 664 sys sys 1016833877 11063
+sys/src/cmd/acme/util.c - 664 sys sys 1073566950 6456
+sys/src/cmd/acme/wind.c - 664 sys sys 1073566950 11094
 sys/src/cmd/acme/xfid.c - 664 sys sys 1067723165 19180
 sys/src/cmd/ar.c - 664 sys sys 1046643027 23717
 sys/src/cmd/archfs.c - 664 sys sys 1014925694 3871

+ 4 - 0
dist/replica/plan9.log

@@ -13277,3 +13277,7 @@
 1073325731 0 c sys/src/9/port/portclock.c - 664 sys sys 1073323995 4758
 1073325731 1 c sys/src/9/port/portdat.h - 664 sys sys 1073324006 22707
 1073491355 0 c sys/man/4/lnfs - 664 sys sys 1073491345 1219
+1073566966 0 c sys/src/cmd/acme/dat.h - 664 sys sys 1073566949 10976
+1073566966 1 c sys/src/cmd/acme/ecmd.c - 664 sys sys 1073566949 24288
+1073566966 2 c sys/src/cmd/acme/util.c - 664 sys sys 1073566950 6456
+1073566966 3 c sys/src/cmd/acme/wind.c - 664 sys sys 1073566950 11094

+ 1 - 0
sys/src/cmd/acme/dat.h

@@ -486,6 +486,7 @@ enum	/* editing */
 	Collecting,
 };
 
+uint		globalincref;
 uint		seq;
 uint		maxtab;	/* size of a tab, in units of the '0' character */
 

+ 4 - 1
sys/src/cmd/acme/ecmd.c

@@ -943,12 +943,15 @@ filelooper(Cmd *cp, int XY)
 	/*
 	 * add a ref to all windows to keep safe windows accessed by X
 	 * that would not otherwise have a ref to hold them up during
-	 * the shenanigans.
+	 * the shenanigans.  note this with globalincref so that any
+	 * newly created windows start with an extra reference.
 	 */
 	allwindows(alllocker, (void*)1);
+	globalincref = 1;
 	for(i=0; i<loopstruct.nw; i++)
 		cmdexec(&loopstruct.w[i]->body, cp->cmd);
 	allwindows(alllocker, (void*)0);
+	globalincref = 0;
 	free(loopstruct.w);
 	loopstruct.w = nil;
 

+ 5 - 3
sys/src/cmd/acme/util.c

@@ -63,10 +63,12 @@ errorwin1(Rune *dir, int ndir, Rune **incl, int nincl)
 	int i, n;
 
 	r = runemalloc(ndir+8);
-	if(n = ndir)	/* assign = */
+	if(n = ndir){	/* assign = */
 		runemove(r, dir, ndir);
-	runemove(r+n, L"/+Errors", 8);
-	n += 8;
+		r[n++] = L'/';
+	}
+	runemove(r+n, L"+Errors", 7);
+	n += 7;
 	w = lookfile(r, n);
 	if(w == nil){
 		if(row.ncol == 0)

+ 2 - 0
sys/src/cmd/acme/wind.c

@@ -26,6 +26,8 @@ wininit(Window *w, Window *clone, Rectangle r)
 	w->body.w = w;
 	w->id = ++winid;
 	incref(w);
+	if(globalincref)
+		incref(w);
 	w->ctlfid = ~0;
 	w->utflastqid = -1;
 	r1 = r;