Ticket #758: 3d_crash.diff

File 3d_crash.diff, 1.4 KB (added by tegzed, 11 years ago)

another try to fix 3d crash

  • graphics.c

     
    10911091draw_circle(struct point *pnt, int diameter, int scale, int start, int len, struct point *res, int *pos, int dir)
    10921092{
    10931093        struct circle *c;
    1094 
     1094//printf("DEBUG 1  %d\n",*pos);
    10951095#if 0
    10961096        dbg(0,"diameter=%d start=%d len=%d pos=%d dir=%d\n", diameter, start, len, *pos, dir);
    10971097#endif
     
    11191119                        while (i < count && c[i].fowler <= start)
    11201120                                i+=step;
    11211121                        while (i < count && c[i].fowler < end) {
    1122                                 res[*pos].x=pnt->x+((c[i].x*diameter+128)>>8);
    1123                                 res[*pos].y=pnt->y+((c[i].y*diameter+128)>>8);
    1124                                 (*pos)+=dir;
     1122                                if (1< *pos) {
     1123                                        //printf("DEBUG 3  %d\n",*pos);
     1124                                        res[*pos].x=pnt->x+((c[i].x*diameter+128)>>8);
     1125                                        res[*pos].y=pnt->y+((c[i].y*diameter+128)>>8);
     1126                                        (*pos)+=dir;
     1127                                }
    11251128                                i+=step;
    11261129                        }
    11271130                        end-=1024;
     
    11371140                        while (i >= 0 && c[i].fowler >= start)
    11381141                                i-=step;
    11391142                        while (i >= 0 && c[i].fowler > end) {
    1140                                 res[*pos].x=pnt->x+((c[i].x*diameter+128)>>8);
    1141                                 res[*pos].y=pnt->y+((c[i].y*diameter+128)>>8);
    1142                                 (*pos)+=dir;
     1143                                if (1< *pos) {
     1144                                        //printf("DEBUG 2  %d\n",*pos);
     1145                                        res[*pos].x=pnt->x+((c[i].x*diameter+128)>>8);
     1146                                        res[*pos].y=pnt->y+((c[i].y*diameter+128)>>8);
     1147                                        (*pos)+=dir;
     1148                                }
    11431149                                i-=step;
    11441150                        }
    11451151                        start+=1024;