Patch 8.2.3348

13 views
Skip to first unread message

Bram Moolenaar

unread,
Aug 15, 2021, 8:32:20 AM8/15/21
to vim...@googlegroups.com

Patch 8.2.3348
Problem: line2byte() returns wrong value after adding textprop. (Yuto
Kimura)
Solution: Reduce the length by the size of the text property. (closes #8759)
Files: src/memline.c, src/testdir/test_textprop.vim


*** ../vim-8.2.3347/src/memline.c 2021-07-29 20:37:45.652199179 +0200
--- src/memline.c 2021-08-15 14:26:01.318638705 +0200
***************
*** 3977,3982 ****
--- 3977,3985 ----
*/
if ((int)dp->db_free >= extra)
{
+ #ifdef FEAT_BYTEOFF
+ int old_prop_len = 0;
+ #endif
// if the length changes and there are following lines
count = buf->b_ml.ml_locked_high - buf->b_ml.ml_locked_low + 1;
if (extra != 0 && idx < count - 1)
***************
*** 3995,4007 ****
// adjust free space
dp->db_free -= extra;
dp->db_txt_start -= extra;

// copy new line into the data block
mch_memmove(old_line - extra, new_line, (size_t)new_len);
buf->b_ml.ml_flags |= (ML_LOCKED_DIRTY | ML_LOCKED_POS);
#ifdef FEAT_BYTEOFF
// The else case is already covered by the insert and delete
! ml_updatechunk(buf, lnum, (long)extra, ML_CHNK_UPDLINE);
#endif
}
else
--- 3998,4021 ----
// adjust free space
dp->db_free -= extra;
dp->db_txt_start -= extra;
+ #ifdef FEAT_BYTEOFF
+ if (buf->b_has_textprop)
+ old_prop_len = old_len - STRLEN(new_line) - 1;
+ #endif

// copy new line into the data block
mch_memmove(old_line - extra, new_line, (size_t)new_len);
buf->b_ml.ml_flags |= (ML_LOCKED_DIRTY | ML_LOCKED_POS);
#ifdef FEAT_BYTEOFF
// The else case is already covered by the insert and delete
! if (buf->b_has_textprop)
! {
! // Do not count the size of any text properties.
! extra += old_prop_len;
! extra -= new_len - STRLEN(new_line) - 1;
! }
! if (extra != 0)
! ml_updatechunk(buf, lnum, (long)extra, ML_CHNK_UPDLINE);
#endif
}
else
***************
*** 5595,5601 ****
else
#endif
{
! if (idx == 0)// first line in block, text at the end
text_end = dp->db_txt_end;
else
text_end = ((dp->db_index[idx - 1]) & DB_INDEX_MASK);
--- 5609,5615 ----
else
#endif
{
! if (idx == 0) // first line in block, text at the end
text_end = dp->db_txt_end;
else
text_end = ((dp->db_index[idx - 1]) & DB_INDEX_MASK);
***************
*** 5734,5740 ****
return 1; // Not a "find offset" and offset 0 _must_ be in line 1
/*
* Find the last chunk before the one containing our line. Last chunk is
! * special because it will never qualify
*/
curline = 1;
curix = size = 0;
--- 5748,5754 ----
return 1; // Not a "find offset" and offset 0 _must_ be in line 1
/*
* Find the last chunk before the one containing our line. Last chunk is
! * special because it will never qualify.
*/
curline = 1;
curix = size = 0;
*** ../vim-8.2.3347/src/testdir/test_textprop.vim 2021-08-01 21:30:08.893199555 +0200
--- src/testdir/test_textprop.vim 2021-08-15 14:22:36.435259206 +0200
***************
*** 809,816 ****
--- 809,826 ----
call assert_equal(19, line2byte(3))
call prop_add(1, 1, {'end_col': 3, 'type': 'comment'})
call assert_equal(19, line2byte(3))
+ bwipe!

+ new
+ call setline(1, range(500))
+ call assert_equal(1491, line2byte(401))
+ call prop_add(2, 1, {'type': 'comment'})
+ call prop_add(222, 1, {'type': 'comment'})
+ call assert_equal(1491, line2byte(401))
+ call prop_remove({'type': 'comment'})
+ call assert_equal(1491, line2byte(401))
bwipe!
+
call prop_type_delete('comment')
endfunc

*** ../vim-8.2.3347/src/version.c 2021-08-15 13:49:38.130905563 +0200
--- src/version.c 2021-08-15 14:21:20.243495612 +0200
***************
*** 757,758 ****
--- 757,760 ----
{ /* Add new patch number below this line */
+ /**/
+ 3348,
/**/

--
BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One.
ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O
Lord bless this thy hand grenade that with it thou mayest
blow thine enemies to tiny bits, in thy mercy. "and the Lord
did grin and people did feast upon the lambs and sloths and
carp and anchovies and orang-utans and breakfast cereals and
fruit bats and...
BROTHER MAYNARD: Skip a bit brother ...
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

/// Bram Moolenaar -- Br...@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 ///

John Marriott

unread,
Aug 15, 2021, 3:53:41 PM8/15/21
to vim...@googlegroups.com

On 15-Aug-2021 22:32, Bram Moolenaar wrote:
> Patch 8.2.3348
> Problem: line2byte() returns wrong value after adding textprop. (Yuto
> Kimura)
> Solution: Reduce the length by the size of the text property. (closes #8759)
> Files: src/memline.c, src/testdir/test_textprop.vim
>
>
Hi All,

After this patch, mingw64 (gcc 11.2.0) spits out this error message if
FEAT_PROP_POPUP is not defined:
<snip>
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  memline.c -o objnative/memline.o memline.c: In function
'ml_flush_line':
memline.c:4002:24: error: 'buf_T' {aka 'struct file_buffer'} has no
member named 'b_has_textprop'
 4002 |                 if (buf->b_has_textprop)
      |                        ^~
memline.c:4011:24: error: 'buf_T' {aka 'struct file_buffer'} has no
member named 'b_has_textprop'
 4011 |                 if (buf->b_has_textprop)
      |                        ^~
make: *** [Make_cyg_ming.mak:1159: objnative/memline.o] Error 1
</snip>

There might be a mismatch of ifdef tests here.
structs.h includes "b_has_textprop" if FEAT_PROP_POPUP is defined (line
3038 in structs.h):
<snip>
#ifdef FEAT_PROP_POPUP
    int        b_has_textprop;    // TRUE when text props were added
    hashtab_T    *b_proptypes;    // text property types local to buffer
#endif
</snip>

But this patch tries to use it if FEAT_BYTEOFF is defined (line 4001 in
memline.c):
<snip>
#ifdef FEAT_BYTEOFF
        if (buf->b_has_textprop)
            old_prop_len = old_len - STRLEN(new_line) - 1;
#endif
</snip>

(line 4009 in memline.,c):
</snip>
#ifdef FEAT_BYTEOFF
        // The else case is already covered by the insert and delete
        if (buf->b_has_textprop)
        {
            // Do not count the size of any text properties.
            extra += old_prop_len;
            extra -= new_len - STRLEN(new_line) - 1;
        }
        if (extra != 0)
            ml_updatechunk(buf, lnum, (long)extra, ML_CHNK_UPDLINE);
#endif
</snip>

Defining FEAT_PROP_POPUP fixes the problem providing FEAT_SPELL or
FEAT_QUICKFIX is also defined.

Cheers
John

Bram Moolenaar

unread,
Aug 15, 2021, 4:11:36 PM8/15/21
to vim...@googlegroups.com, John Marriott
The #ifdef should check both FEAT_BYTEOFF and FEAT_PROP_POPUP, the code
is only needed when both are defined. I'll make a patch.

--
Veni, Vidi, VW -- I came, I saw, I drove around in a little car.

John Marriott

unread,
Aug 15, 2021, 4:44:06 PM8/15/21
to vim...@googlegroups.com
>> ...

>> The #ifdef should check both FEAT_BYTEOFF and FEAT_PROP_POPUP, the code
>> is only needed when both are defined. I'll make a patch.
>>
Hi Bram,

Now something definitely isn't right. After patch 8.2.3354 I get this
link error (FEAT_PROP_POPUP, FEAT_QUICKFIX and FEAT_SPELL are all
disabled for this build):
<snip>
gcc -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 -Wl,-nxcompat,-dynamicbase
-municode -s -mwindows -o gvim.exe gobjnative/alloc.o
gobjnative/arabic.o gobjnative/arglist.o gobjnative/autocmd.o
gobjnative/beval.o gobjnative/blob.o gobjnative/blowfish.o
gobjnative/buffer.o gobjnative/bufwrite.o gobjnative/change.o
gobjnative/charset.o gobjnative/cindent.o gobjnative/clientserver.o
gobjnative/clipboard.o gobjnative/cmdexpand.o gobjnative/cmdhist.o
gobjnative/crypt.o gobjnative/crypt_zip.o gobjnative/debugger.o
gobjnative/dict.o gobjnative/diff.o gobjnative/digraph.o
gobjnative/drawline.o gobjnative/drawscreen.o gobjnative/edit.o
gobjnative/eval.o gobjnative/evalbuffer.o gobjnative/evalfunc.o
gobjnative/evalvars.o gobjnative/evalwindow.o gobjnative/ex_cmds.o
gobjnative/ex_cmds2.o gobjnative/ex_docmd.o gobjnative/ex_eval.o
gobjnative/ex_getln.o gobjnative/fileio.o gobjnative/filepath.o
gobjnative/findfile.o gobjnative/float.o gobjnative/fold.o
gobjnative/getchar.o gobjnative/gui_xim.o gobjnative/hardcopy.o
gobjnative/hashtab.o gobjnative/help.o gobjnative/highlight.o
gobjnative/if_cscope.o gobjnative/indent.o gobjnative/insexpand.o
gobjnative/json.o gobjnative/list.o gobjnative/locale.o
gobjnative/main.o gobjnative/map.o gobjnative/mark.o gobjnative/match.o
gobjnative/memfile.o gobjnative/memline.o gobjnative/menu.o
gobjnative/message.o gobjnative/misc1.o gobjnative/misc2.o
gobjnative/mouse.o gobjnative/move.o gobjnative/mbyte.o
gobjnative/normal.o gobjnative/ops.o gobjnative/option.o
gobjnative/optionstr.o gobjnative/os_mswin.o gobjnative/os_win32.o
gobjnative/pathdef.o gobjnative/popupmenu.o gobjnative/popupwin.o
gobjnative/profiler.o gobjnative/quickfix.o gobjnative/regexp.o
gobjnative/register.o gobjnative/scriptfile.o gobjnative/screen.o
gobjnative/search.o gobjnative/session.o gobjnative/sha256.o
gobjnative/sign.o gobjnative/spell.o gobjnative/spellfile.o
gobjnative/spellsuggest.o gobjnative/strings.o gobjnative/syntax.o
gobjnative/tag.o gobjnative/term.o gobjnative/testing.o
gobjnative/textformat.o gobjnative/textobject.o gobjnative/textprop.o
gobjnative/time.o gobjnative/typval.o gobjnative/ui.o gobjnative/undo.o
gobjnative/usercmd.o gobjnative/userfunc.o gobjnative/version.o
gobjnative/vim9compile.o gobjnative/vim9execute.o
gobjnative/vim9script.o gobjnative/vim9type.o gobjnative/viminfo.o
gobjnative/winclip.o gobjnative/window.o gobjnative/os_w32exe.o
gobjnative/vimres.o gobjnative/xdiffi.o gobjnative/xemit.o
gobjnative/xprepare.o gobjnative/xutils.o gobjnative/xhistogram.o
gobjnative/xpatience.o gobjnative/gui.o gobjnative/gui_w32.o
gobjnative/gui_beval.o -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32
-lcomctl32 -lnetapi32 -lversion -lole32 -luuid
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/drawline.o:drawline.c:(.text+0x238): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/drawline.o:drawline.c:(.text+0x6bc): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/edit.o:edit.c:(.text+0x5ede): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/edit.o:edit.c:(.text+0x645f): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/evalwindow.o:evalwindow.c:(.text+0x125): undefined reference
to `bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/evalwindow.o:evalwindow.c:(.text+0x140): more undefined
references to `bt_quickfix' follow
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/ex_docmd.o:ex_docmd.c:(.text+0xf520): undefined reference to
`prepare_tagpreview'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/ex_docmd.o:ex_docmd.c:(.text+0xf852): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/ex_docmd.o:ex_docmd.c:(.text+0xfb79): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/mouse.o:mouse.c:(.text+0x2abe): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/normal.o:normal.c:(.text+0x3f9b): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/popupmenu.o:popupmenu.c:(.text+0xe79): undefined reference to
`prepare_tagpreview'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/popupwin.o:popupwin.c:(.text+0xe36): undefined reference to
`ml_append_buf'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/popupwin.o:popupwin.c:(.text+0xe95): undefined reference to
`ml_append_buf'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/popupwin.o:popupwin.c:(.text+0xeea): undefined reference to
`ml_append_buf'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0xf69): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x115e): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x1228): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x12f4): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x18a3): undefined reference to
`ml_append_buf'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x1c98): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x1d17): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x4514): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x5cdc): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x6054): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/quickfix.o:quickfix.c:(.text+0x60b2): more undefined
references to `bt_quickfix' follow
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/search.o:search.c:(.text+0x90b9): undefined reference to
`prepare_tagpreview'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/sign.o:sign.c:(.text+0x175f): undefined reference to
`gui_mch_destroy_sign'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/sign.o:sign.c:(.text+0x1768): undefined reference to
`gui_mch_register_sign'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/sign.o:sign.c:(.text+0x1af4): undefined reference to
`gui_mch_destroy_sign'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/sign.o:sign.c:(.text+0x2d22): undefined reference to
`gui_mch_register_sign'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/sign.o:sign.c:(.text+0x2dbf): undefined reference to
`gui_mch_destroy_sign'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/sign.o:sign.c:(.text+0x3b17): undefined reference to
`gui_mch_destroy_sign'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/tag.o:tag.c:(.text+0x454c): undefined reference to
`prepare_tagpreview'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/window.o:window.c:(.text+0x55cc): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/window.o:window.c:(.text+0xda97): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/window.o:window.c:(.text+0xdc03): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/window.o:window.c:(.text+0x1094b): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/window.o:window.c:(.text+0x10ba1): undefined reference to
`bt_quickfix'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/window.o:window.c:(.text+0x10da1): more undefined references
to `bt_quickfix' follow
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/gui.o:gui.c:(.text+0xa5a): undefined reference to
`gui_mch_drawsign'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
gobjnative/gui.o:gui.c:(.text+0x17ed): undefined reference to
`gui_mch_drawsign'
collect2.exe: error: ld returned 1 exit status
make: *** [Make_cyg_ming.mak:1089: gvim.exe] Error 1
<snip>

Enabling FEAT_SPELL or FEAT_QUICKFIX fixes it.

Cheers
John

Bram Moolenaar

unread,
Aug 16, 2021, 4:24:22 AM8/16/21
to vim...@googlegroups.com, John Marriott
This looks like you need to do "make clean".

--
LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall?
ARTHUR: No, that's Saint Ives.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

John Marriott

unread,
Aug 16, 2021, 4:59:09 PM8/16/21
to vim...@googlegroups.com
Hi Bram,

You're right of course. A "make clean" and all is well again.

Thanks
Reply all
Reply to author
Forward
0 new messages