@@ -1661,7 +1661,7 @@ get_script_item_idx(int sid, char_u *name, int check_writable)
16611661 int idx ;
16621662
16631663 // First look the name up in the hashtable.
1664- if (sid <= 0 || sid > script_items . ga_len )
1664+ if (! SCRIPT_ID_VALID ( sid ) )
16651665 return -1 ;
16661666 ht = & SCRIPT_VARS (sid );
16671667 di = find_var_in_ht (ht , 0 , name , TRUE);
@@ -1692,7 +1692,7 @@ find_imported(char_u *name, size_t len, cctx_T *cctx)
16921692{
16931693 int idx ;
16941694
1695- if (current_sctx .sc_sid <= 0 )
1695+ if (! SCRIPT_ID_VALID ( current_sctx .sc_sid ) )
16961696 return NULL ;
16971697 if (cctx != NULL )
16981698 for (idx = 0 ; idx < cctx -> ctx_imports .ga_len ; ++ idx )
@@ -1712,9 +1712,12 @@ find_imported(char_u *name, size_t len, cctx_T *cctx)
17121712 imported_T *
17131713find_imported_in_script (char_u * name , size_t len , int sid )
17141714{
1715- scriptitem_T * si = SCRIPT_ITEM ( sid ) ;
1715+ scriptitem_T * si ;
17161716 int idx ;
17171717
1718+ if (!SCRIPT_ID_VALID (sid ))
1719+ return NULL ;
1720+ si = SCRIPT_ITEM (sid );
17181721 for (idx = 0 ; idx < si -> sn_imports .ga_len ; ++ idx )
17191722 {
17201723 imported_T * import = ((imported_T * )si -> sn_imports .ga_data ) + idx ;
@@ -1966,10 +1969,14 @@ compile_load_scriptvar(
19661969 char_u * * end , // end of variable
19671970 int error ) // when TRUE may give error
19681971{
1969- scriptitem_T * si = SCRIPT_ITEM ( current_sctx . sc_sid ) ;
1970- int idx = get_script_item_idx ( current_sctx . sc_sid , name , FALSE) ;
1972+ scriptitem_T * si ;
1973+ int idx ;
19711974 imported_T * import ;
19721975
1976+ if (!SCRIPT_ID_VALID (current_sctx .sc_sid ))
1977+ return FAIL ;
1978+ si = SCRIPT_ITEM (current_sctx .sc_sid );
1979+ idx = get_script_item_idx (current_sctx .sc_sid , name , FALSE);
19731980 if (idx == -1 || si -> sn_version != SCRIPT_VERSION_VIM9 )
19741981 {
19751982 // variable is not in sn_var_vals: old style script.
@@ -4750,15 +4757,18 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
47504757 scriptvar_sid = current_sctx .sc_sid ;
47514758 if (import != NULL )
47524759 scriptvar_sid = import -> imp_sid ;
4753- scriptvar_idx = get_script_item_idx (scriptvar_sid ,
4754- rawname , TRUE);
4755- if (scriptvar_idx >= 0 )
4760+ if (SCRIPT_ID_VALID (scriptvar_sid ))
47564761 {
4757- scriptitem_T * si = SCRIPT_ITEM (scriptvar_sid );
4758- svar_T * sv =
4762+ scriptvar_idx = get_script_item_idx (scriptvar_sid ,
4763+ rawname , TRUE);
4764+ if (scriptvar_idx > 0 )
4765+ {
4766+ scriptitem_T * si = SCRIPT_ITEM (scriptvar_sid );
4767+ svar_T * sv =
47594768 ((svar_T * )si -> sn_var_vals .ga_data )
47604769 + scriptvar_idx ;
4761- type = sv -> sv_type ;
4770+ type = sv -> sv_type ;
4771+ }
47624772 }
47634773 }
47644774 else if (name [1 ] == ':' && name [2 ] != NUL )
0 commit comments