@@ -5421,8 +5421,8 @@ cw_value(int c)
54215421 static int
54225422tv_nr_compare (const void * a1 , const void * a2 )
54235423{
5424- listitem_T * li1 = (listitem_T * )a1 ;
5425- listitem_T * li2 = (listitem_T * )a2 ;
5424+ listitem_T * li1 = * (listitem_T * * )a1 ;
5425+ listitem_T * li2 = * (listitem_T * * )a2 ;
54265426
54275427 return li1 -> li_tv .vval .v_number - li2 -> li_tv .vval .v_number ;
54285428}
@@ -5470,8 +5470,10 @@ f_setcellwidths(typval_T *argvars, typval_T *rettv UNUSED)
54705470 vim_free (ptrs );
54715471 return ;
54725472 }
5473- for (lili = li -> li_tv .vval .v_list -> lv_first , i = 0 ; lili != NULL ;
5474- lili = lili -> li_next , ++ i )
5473+
5474+ lili = li -> li_tv .vval .v_list -> lv_first ;
5475+ ptrs [item ] = lili ;
5476+ for (i = 0 ; lili != NULL ; lili = lili -> li_next , ++ i )
54755477 {
54765478 if (lili -> li_tv .v_type != VAR_NUMBER )
54775479 break ;
@@ -5505,7 +5507,7 @@ f_setcellwidths(typval_T *argvars, typval_T *rettv UNUSED)
55055507 vim_free (ptrs );
55065508 return ;
55075509 }
5508- ptrs [ item ++ ] = lili ;
5510+ ++ item ;
55095511 }
55105512
55115513 // Sort the list on the first number.
@@ -5520,9 +5522,9 @@ f_setcellwidths(typval_T *argvars, typval_T *rettv UNUSED)
55205522
55215523 // Store the items in the new table.
55225524 item = 0 ;
5523- for (li = l -> lv_first ; li != NULL ; li = li -> li_next )
5525+ for (item = 0 ; item < l -> lv_len ; ++ item )
55245526 {
5525- listitem_T * lili = li -> li_tv . vval . v_list -> lv_first ;
5527+ listitem_T * lili = ptrs [ item ] ;
55265528 varnumber_T n1 ;
55275529
55285530 n1 = lili -> li_tv .vval .v_number ;
@@ -5538,7 +5540,6 @@ f_setcellwidths(typval_T *argvars, typval_T *rettv UNUSED)
55385540 table [item ].last = lili -> li_tv .vval .v_number ;
55395541 lili = lili -> li_next ;
55405542 table [item ].width = lili -> li_tv .vval .v_number ;
5541- ++ item ;
55425543 }
55435544
55445545 vim_free (ptrs );
0 commit comments