patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Problem: Vim9: crash when compiling heredoc lines start with comment.
Solution: Skip over NULL pointers. Do not remove comment and empty lines
when fetching function lines. (closes #6743)
diff --git a/src/proto/autocmd.pro b/src/proto/autocmd.pro
index 65a6352..88eae5a 100644
--- a/src/proto/autocmd.pro
+++ b/src/proto/autocmd.pro
@@ -28,7 +28,7 @@
void block_autocmds(void);
void unblock_autocmds(void);
int is_autocmd_blocked(void);
-char_u *getnextac(int c, void *cookie, int indent, int do_concat);
+char_u *getnextac(int c, void *cookie, int indent, getline_opt_T options);
int has_autocmd(event_T event, char_u *sfname, buf_T *buf);
char_u *get_augroup_name(expand_T *xp, int idx);
char_u *set_context_in_autocmd(expand_T *xp, char_u *arg, int doautocmd);
diff --git a/src/proto/ex_docmd.pro b/src/proto/ex_docmd.pro
index 2c70eb2..1955ccf 100644
--- a/src/proto/ex_docmd.pro
+++ b/src/proto/ex_docmd.pro
@@ -1,10 +1,10 @@
/* ex_docmd.c */
void do_exmode(int improved);
int do_cmdline_cmd(char_u *cmd);
-int do_cmdline(char_u *cmdline, char_u *(*fgetline)(int, void *, int, int), void *cookie, int flags);
-int getline_equal(char_u *(*fgetline)(int, void *, int, int), void *cookie, char_u *(*func)(int, void *, int, int));
-void *getline_cookie(char_u *(*fgetline)(int, void *, int, int), void *cookie);
-char_u *getline_peek(char_u *(*fgetline)(int, void *, int, int), void *cookie);
+int do_cmdline(char_u *cmdline, char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie, int flags);
+int getline_equal(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie, char_u *(*func)(int, void *, int, getline_opt_T));
+void *getline_cookie(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
+char_u *getline_peek(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
char *ex_errmsg(char *msg, char_u *arg);
int parse_command_modifiers(exarg_T *eap, char **errormsg, int skip_only);
void undo_cmdmod(exarg_T *eap, int save_msg_scroll);
diff --git a/src/proto/ex_getln.pro b/src/proto/ex_getln.pro
index f64bb1f..faecab2 100644
--- a/src/proto/ex_getln.pro
+++ b/src/proto/ex_getln.pro
@@ -9,8 +9,8 @@
int text_locked(void);
int curbuf_locked(void);
int allbuf_locked(void);
-char_u *getexline(int c, void *cookie, int indent, int do_concat);
-char_u *getexmodeline(int promptc, void *cookie, int indent, int do_concat);
+char_u *getexline(int c, void *cookie, int indent, getline_opt_T options);
+char_u *getexmodeline(int promptc, void *cookie, int indent, getline_opt_T options);
int cmdline_overstrike(void);
int cmdline_at_end(void);
colnr_T cmdline_getvcol_cursor(void);
diff --git a/src/proto/scriptfile.pro b/src/proto/scriptfile.pro
index 00f1301..52df2ca 100644
--- a/src/proto/scriptfile.pro
+++ b/src/proto/scriptfile.pro
@@ -29,13 +29,13 @@
char_u *get_scriptname(scid_T id);
void free_scriptnames(void);
void free_autoload_scriptnames(void);
-linenr_T get_sourced_lnum(char_u *(*fgetline)(int, void *, int, int), void *cookie);
-char_u *getsourceline(int c, void *cookie, int indent, int do_concat);
+linenr_T get_sourced_lnum(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
+char_u *getsourceline(int c, void *cookie, int indent, getline_opt_T options);
void ex_scriptencoding(exarg_T *eap);
void ex_scriptversion(exarg_T *eap);
void ex_finish(exarg_T *eap);
void do_finish(exarg_T *eap, int reanimate);
-int source_finished(char_u *(*fgetline)(int, void *, int, int), void *cookie);
+int source_finished(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
char_u *autoload_name(char_u *name);
int script_autoload(char_u *name, int reload);
/* vim: set ft=c : */
diff --git a/src/proto/userfunc.pro b/src/proto/userfunc.pro
index 2c4cbd5..e6acc18 100644
--- a/src/proto/userfunc.pro
+++ b/src/proto/userfunc.pro
@@ -46,7 +46,7 @@
int do_return(exarg_T *eap, int reanimate, int is_cmd, void *rettv);
void discard_pending_return(void *rettv);
char_u *get_return_cmd(void *rettv);
-char_u *get_func_line(int c, void *cookie, int indent, int do_concat);
+char_u *get_func_line(int c, void *cookie, int indent, getline_opt_T options);
int func_has_ended(void *cookie);
int func_has_abort(void *cookie);
dict_T *make_partial(dict_T *selfdict_in, typval_T *rettv);