Re: [PATCH] Remove deprecated access to tcl internal variables

Keith Seitz <[email protected]> Fri, 23 Mar 2012 15:25:06 -0700
Newsgroups gmane.comp.debugging.insight
Message-ID <[email protected]>
I noticed this a while back, too.. Some small nits.

In the future, could you please
add "-p" option to diff? I have "diff -upN" set in my .cvsrc. It gives 
me a little more context when reading the patch.

On 03/19/2012 04:45 AM, Roland Schwingel wrote:
> --- gdbtk_orig/generic/gdbtk.c	2012-03-19 11:21:15.542232400 +0100
> +++ gdbtk/generic/gdbtk.c	2012-03-19 11:23:12.099170600 +0100
> @@ -494,17 +494,17 @@
>     make_final_cleanup (gdbtk_cleanup, NULL);
>
>     if (Tcl_Init (gdbtk_interp) != TCL_OK)
> -    error ("Tcl_Init failed: %s", gdbtk_interp->result);
> +    error ("Tcl_Init failed: %s", Tcl_GetStringResult(gdbtk_interp));

Watch the spaces in between function names and open parenthesis. This is 
a GNU convention (which we follow). That should be "Tcl_GetStringResult 
(gdbtk_interp)".

There are several places where this occurs throughout the patches (and 
subsequent ones).

> tcl_compat_gdbtk-hooks.c.patch
>
>
> --- gdbtk_orig/generic/gdbtk-hooks.c	2012-01-03 13:26:56.000000000 +0100
> +++ gdbtk/generic/gdbtk-hooks.c	2012-03-05 11:47:03.340565000 +0100
> @@ -254,17 +254,22 @@
>   	{
>   	  report_error ();
>   	  actual_len = 0;
> +	  buf[0] = '\0';
> +	  return 0;

This hunk is not mentioned in the ChangeLog.

I don't understand this. If we return 0 here, that means that no bytes 
in the buffer were filled-in, yet we are actually filling in one byte 
anyway. Is there a problem this was designed to solve? Is the return 
value not being checked somewhere or buf assumed to have at least the 
string terminal in it?

>   	}
>         else
> -        actual_len = strlen (gdbtk_interp->result);
> +      {
> +      	const char *tclResult = Tcl_GetStringResult(gdbtk_interp);
> +        actual_len = strlen (tclResult);
>
>         /* Truncate the string if it is too big for the caller's buffer.  */
>         if (actual_len>= sizeof_buf)
>   	actual_len = sizeof_buf - 1;
>
> -      memcpy (buf, gdbtk_interp->result, actual_len);
> +      memcpy (buf,tclResult, actual_len);
>         buf[actual_len] = '\0';
>         return actual_len;
> +     }
>       }
>     else
>       {

Keith