Jeff, another bug relating to is_locked has appeared in sc.c, and been squashed!
Sun/SPARC is a great architecture for finding NULL ptr dereferencing!
I also made a small change in vi.c to eliminate a compile-time warning.
[I grepped for is_locked and I see that interp.c invokes ATBL to get a pointer,
and doesn't check for NULL, but perhaps it`s guaranteed to be non-null ... I
don`t really know much about SC internals.]
The bug I fixed could be demonstrated by deleting a whole column, or an empty row.

Context diffs follow:

*** sc.c.bug	Wed Sep 11 11:40:44 1991
--- sc.c	Wed Sep 11 11:41:45 1991
***************
*** 1416,1422 ****
  	for (r=r1; r<=r2; r++)
  		for (c=c1; c<=c2; c++) {
  			p = *ATBL(tbl, r, c);
! 			if (p->flags&is_locked)
  				return(1);
  		}
  	return(0);
--- 1416,1422 ----
  	for (r=r1; r<=r2; r++)
  		for (c=c1; c<=c2; c++) {
  			p = *ATBL(tbl, r, c);
! 			if (p && p->flags&is_locked)
  				return(1);
  		}
  	return(0);
*** vi.c.orig	Tue Sep 10 15:40:37 1991
--- vi.c	Wed Sep 11 14:00:22 1991
***************
*** 661,667 ****
  	prev_histp = histp;
  	look_here = line;
  	found_it = do_next = 0;
! 	while ((look_here = strchr(look_here, last_search[0])) != NULL &&
  						!found_it && !do_next) {
  
  	    if (strncmp(look_here, last_search, strlen(last_search)) == 0)
--- 661,667 ----
  	prev_histp = histp;
  	look_here = line;
  	found_it = do_next = 0;
! 	while ((look_here = (char *)strchr(look_here, *last_search)) != NULL &&
  						!found_it && !do_next) {
  
  	    if (strncmp(look_here, last_search, strlen(last_search)) == 0)
============================================
-- James Dugal,	N5KNX		Internet: jpd@usl.edu
Associate Director		Ham packet: n5knx@k5arh
Computing Center		US Mail: PO Box 42770  Lafayette, LA  70504
University of Southwestern LA.	Tel. 318-231-6417	U.S.A.
