bugs in v.report?

Here is the patch:
*** do_v_stats.c Fri Jan 27 11:47:34 1995
--- do_v_stats.c.new Fri Jan 27 06:35:56 1995
***************
*** 35,41 ****
  
  {
    int nArea, nLine, map_type, v_r;
! int cnt=0, cat_no, line, linea, island;
    int first, tot_cats, n_points, cmp();
    register int area_num, line_num, i, ii, jj, kk;
    char *calloc(), *label_name, null[1];
--- 35,42 ----
  
  {
    int nArea, nLine, map_type, v_r;
! int cnt=0, line, linea, island;
! CELL cat_no;
    int first, tot_cats, n_points, cmp();
    register int area_num, line_num, i, ii, jj, kk;
    char *calloc(), *label_name, null[1];
***************
*** 119,134 ****
        /* get the category number for area "area_num" */
        cat_no = Map.Att[Map.Area[area_num].att].cat;
  /*fprintf(stderr,"\ncat#= %d\n",cat_no);*/
! label_name = G_get_cat(cat_no, cats);
  
        /* Calculate polygon area */
        V2_get_area(&Map,area_num,&Areas);
! Vect_get_area_points(Map, area_num, Points);
              f_area = G_area_of_polygon(Points->x,
                   Points->y, Points->n_points);
                    
        /* dig_find_area2(&Map,Areas,&f_area);*/
- tot_area = f_area;
  
          /* if this area contains islands remove the
            island areas */
--- 120,134 ----
        /* get the category number for area "area_num" */
        cat_no = Map.Att[Map.Area[area_num].att].cat;
  /*fprintf(stderr,"\ncat#= %d\n",cat_no);*/
! label_name = G_get_cat(cat_no, &cats);
  
        /* Calculate polygon area */
        V2_get_area(&Map,area_num,&Areas);
! Vect_get_area_points(&Map, area_num, Points);
              f_area = G_area_of_polygon(Points->x,
                   Points->y, Points->n_points);
                    
        /* dig_find_area2(&Map,Areas,&f_area);*/
  
          /* if this area contains islands remove the
            island areas */
***************
*** 142,152 ****
             if (f_area > 0) tot_area = tot_area - f_area;
             else tot_area = tot_area + f_area;
             */
! Vect_get_isle_points(Map, Map.Area[area_num].isles[ii], Points);
             f_area = f_area - G_area_of_polygon(Points->x,
                  Points->y, Points->n_points);
             }
           }
  
        if (first)
        {
--- 142,153 ----
             if (f_area > 0) tot_area = tot_area - f_area;
             else tot_area = tot_area + f_area;
             */
! Vect_get_isle_points(&Map, Map.Area[area_num].isles[ii], Points);
             f_area = f_area - G_area_of_polygon(Points->x,
                  Points->y, Points->n_points);
             }
           }
+ tot_area = f_area;
  
        if (first)
        {