[comp.sources.bugs] Some Sc6.8 bug fixes

tkacik@kyzyl.mi.org (Tom Tkacik) (09/23/90)

There seem to be a couple of bugs in sc6.8.
Included are a couple of patches I made.

1.  ^W does not work properly.  ^W is supposed to return a cell's
expression.  In sc6.8 is returns the entire edit line
followed by the cell's expression.
The fix is in sc.c.
I fixed it by returning it to what it was in sc6.1.  I do not know
why it had been changed.

2.  When the l command is used at the last allocated column of the table,
or the j command is used at the last row, the table is grown,
but the cursor does not move.
Patch is to cmd.c.

3.  When using g to goto a column that is not yet in the table,
(eg., goto [v] dz0), the cursor ends up in column ei0.
It appears that the table grows by 10 columns beyond the selected
column, and the cusor goes to the last column.
It works when extending the number of rows.
A typo in vmtbl.c.

--

Tom Tkacik		tkacik@kyzyl.mi.org
Speaking only for myself here in Royal Oak.
------------------------------------------------
*** sc.c~	Thu Sep 13 08:50:17 1990
--- sc.c	Sat Sep 22 21:35:25 1990
***************
*** 871,881
  
  		case ctl('w'):	/* insert variable expression */
  		    if (linelim > 0)  {
- 			char *temp, *temp1;
- 			int templim;
- 
- 			temp = strcpy(xmalloc((unsigned)(strlen(line)+1)),line);
- 			templim = linelim;
  			editexp(currow,curcol);
  			temp1= strcpy(xmalloc((unsigned)(strlen(line)+1)),line);
  			strcpy(line, temp);

--- 871,876 -----
  
  		case ctl('w'):	/* insert variable expression */
  		    if (linelim > 0)  {
  			editexp(currow,curcol);
  		    }
  		    break;
***************
*** 877,888
  			temp = strcpy(xmalloc((unsigned)(strlen(line)+1)),line);
  			templim = linelim;
  			editexp(currow,curcol);
- 			temp1= strcpy(xmalloc((unsigned)(strlen(line)+1)),line);
- 			strcpy(line, temp);
- 			linelim = templim;
- 			ins_string(temp1);
- 			xfree(temp);
- 			xfree(temp1);
  		    }
  		    break;
  

--- 872,877 -----
  		case ctl('w'):	/* insert variable expression */
  		    if (linelim > 0)  {
  			editexp(currow,curcol);
  		    }
  		    break;
  
*** cmds.c~	Thu Sep 13 08:50:28 1990
--- cmds.c	Sat Sep 15 19:16:06 1990
***************
*** 1277,1282
  	else
  	if (!growtbl(GROWCOL, 0, arg))	/* get as much as needed */
  		break;
  	while(col_hidden[curcol]&&(curcol<maxcols-1))
  	    curcol++;
      }

--- 1277,1284 -----
  	else
  	if (!growtbl(GROWCOL, 0, arg))	/* get as much as needed */
  		break;
+ 	else
+ 		curcol++;
  	while(col_hidden[curcol]&&(curcol<maxcols-1))
  	    curcol++;
      }
***************
*** 1292,1297
  	else
  	if (!growtbl(GROWROW, arg, 0))	/* get as much as needed */
  		break;
  	while (row_hidden[currow]&&(currow<maxrows-1))
  	    currow++;
      }

--- 1294,1301 -----
  	else
  	if (!growtbl(GROWROW, arg, 0))	/* get as much as needed */
  		break;
+ 	else
+ 		currow++;
  	while (row_hidden[currow]&&(currow<maxrows-1))
  	    currow++;
      }

*** vmtbl.c~	Thu Sep 13 08:51:08 1990
--- vmtbl.c	Sun Sep 16 00:04:18 1990
***************
*** 49,55
  	if (*colp < 0) 
  		*colp = 0;
  	else if (*colp >= maxcols)
! 	{	if (!growtbl(GROWCOL, 0, *colp));
  			*colp = maxcols-1;
  	}
  }

--- 49,55 -----
  	if (*colp < 0) 
  		*colp = 0;
  	else if (*colp >= maxcols)
! 	{	if (!growtbl(GROWCOL, 0, *colp))
  			*colp = maxcols-1;
  	}
  }
-- 
Tom Tkacik		tkacik@kyzyl.mi.org
Speaking only for myself here in Royal Oak.