Re: Patch 8.2.4528

2022-03-08 Fir de Conversatie Bram Moolenaar


John Marriott wrote:

> On 09-Mar-2022 03:53, Bram Moolenaar wrote:
> > Patch 8.2.4528
> > Problem:Crash when using null_function for a partial.
> > Solution:   Don't call fname_trans_sid() with NULL. (closes #9908)
> > Files:  src/userfunc.c, src/testdir/test_vim9_func.vim
> >
> >
> After this patch, mingw64 (gcc 11.2.0) throws this warning:
> 
> gcc -c -I. -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 
> -DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -D__USE_MINGW_ANSI_STDIO 
> -pipe -march=native -Wall -O3 -fomit-frame-pointer -freg-struct-return 
> -fpie -fPIE -DFEAT_GUI_MSWIN -DFEAT_CLIPBOARD userfunc.c -o 
> gobjnative/userfunc.o
> userfunc.c: In function 'make_partial':
> userfunc.c:5755:27: warning: 'fp' may be used uninitialized in this 
> function [-Wmaybe-uninitialized]
>   5755 | if ((fp != NULL && (fp->uf_flags & FC_DICT))
>    | ~~^~
> 
> 
> The attached patch tries to fix it.

It actually caused a crash, when I was adding a few more tests.
The fix has been included with 8.2.4529.

-- 
hundred-and-one symptoms of being an internet addict:
208. Your goals for the future are obtaining a second Gbit connection
and upgrade your NAS to all SSD

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220308213739.4B0F61C08CF%40moolenaar.net.


Re: Patch 8.2.4528

2022-03-08 Fir de Conversatie John Marriott


On 09-Mar-2022 03:53, Bram Moolenaar wrote:

Patch 8.2.4528
Problem:Crash when using null_function for a partial.
Solution:   Don't call fname_trans_sid() with NULL. (closes #9908)
Files:  src/userfunc.c, src/testdir/test_vim9_func.vim



After this patch, mingw64 (gcc 11.2.0) throws this warning:

gcc -c -I. -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 
-DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -D__USE_MINGW_ANSI_STDIO 
-pipe -march=native -Wall -O3 -fomit-frame-pointer -freg-struct-return 
-fpie -fPIE -DFEAT_GUI_MSWIN -DFEAT_CLIPBOARD userfunc.c -o 
gobjnative/userfunc.o

userfunc.c: In function 'make_partial':
userfunc.c:5755:27: warning: 'fp' may be used uninitialized in this 
function [-Wmaybe-uninitialized]

 5755 | if ((fp != NULL && (fp->uf_flags & FC_DICT))
  | ~~^~


The attached patch tries to fix it.

Cheers
John

--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups "vim_dev" group.

To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/1a0fde44-ae60-14a6-deec-7380b73467f8%40internode.on.net.
--- userfunc.c.orig 2022-03-09 05:24:14.896079100 +1100
+++ userfunc.c  2022-03-09 05:28:17.780679800 +1100
@@ -5730,7 +5730,7 @@
 make_partial(dict_T *selfdict_in, typval_T *rettv)
 {
 char_u  *fname;
-ufunc_T *fp;
+ufunc_T *fp = NULL;
 char_u  fname_buf[FLEN_FIXED + 1];
 int error;
 dict_T  *selfdict = selfdict_in;


Patch 8.2.4528

2022-03-08 Fir de Conversatie Bram Moolenaar


Patch 8.2.4528
Problem:Crash when using null_function for a partial.
Solution:   Don't call fname_trans_sid() with NULL. (closes #9908)
Files:  src/userfunc.c, src/testdir/test_vim9_func.vim


*** ../vim-8.2.4527/src/userfunc.c  2022-03-05 20:24:36.899308689 +
--- src/userfunc.c  2022-03-08 16:49:15.880077033 +
***
*** 5730,5736 
  make_partial(dict_T *selfdict_in, typval_T *rettv)
  {
  char_u*fname;
- char_u*tofree = NULL;
  ufunc_T   *fp;
  char_ufname_buf[FLEN_FIXED + 1];
  int   error;
--- 5730,5735 
***
*** 5742,5754 
  {
fname = rettv->v_type == VAR_FUNC ? rettv->vval.v_string
  : rettv->vval.v_partial->pt_name;
!   // Translate "s:func" to the stored function name.
!   fname = fname_trans_sid(fname, fname_buf, , );
!   fp = find_func(fname, FALSE);
!   vim_free(tofree);
  }
  
! if (fp != NULL && (fp->uf_flags & FC_DICT))
  {
partial_T   *pt = ALLOC_CLEAR_ONE(partial_T);
  
--- 5741,5759 
  {
fname = rettv->v_type == VAR_FUNC ? rettv->vval.v_string
  : rettv->vval.v_partial->pt_name;
!   if (fname != NULL)
!   {
!   char_u  *tofree = NULL;
! 
!   // Translate "s:func" to the stored function name.
!   fname = fname_trans_sid(fname, fname_buf, , );
!   fp = find_func(fname, FALSE);
!   vim_free(tofree);
!   }
  }
  
! if ((fp != NULL && (fp->uf_flags & FC_DICT))
!   || (rettv->v_type == VAR_FUNC && rettv->vval.v_string == NULL))
  {
partial_T   *pt = ALLOC_CLEAR_ONE(partial_T);
  
*** ../vim-8.2.4527/src/testdir/test_vim9_func.vim  2022-03-08 
13:18:10.813020777 +
--- src/testdir/test_vim9_func.vim  2022-03-08 16:51:18.819893096 +
***
*** 3337,3342 
--- 3337,3351 
assert_equal(123, RefRef())
  enddef
  
+ def Test_partial_null_function()
+   var lines =<< trim END
+   var d: dict = {f: null_function}
+   var Ref = d.f
+   assert_equal('func', typename(Ref))
+   END
+   v9.CheckDefAndScriptSuccess(lines)
+ enddef
+ 
  " Using "idx" from a legacy global function does not work.
  " This caused a crash when called from legacy context.
  func Test_partial_call_fails()
*** ../vim-8.2.4527/src/version.c   2022-03-08 13:32:34.238804971 +
--- src/version.c   2022-03-08 16:49:01.424096580 +
***
*** 752,753 
--- 752,755 
  {   /* Add new patch number below this line */
+ /**/
+ 4528,
  /**/

-- 
panic("Fod fight!");
-- In the kernel source aha1542.c, after detecting a bad segment list

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220308165343.DC03E1C02B3%40moolenaar.net.