2.8'' TFT Touch Shield drawLine bug?

here is the correct line code:

int w = x1 - x0 ;
int h = y1 - y0 ;
int dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0 ;
if (w<0) dx1 = -1 ; else if (w>0) dx1 = 1 ;
if (h<0) dy1 = -1 ; else if (h>0) dy1 = 1 ;
if (w<0) dx2 = -1 ; else if (w>0) dx2 = 1 ;
int longest = abs(w) ;
int shortest = abs(h) ;
if (!(longest>shortest)) {
longest = abs(h) ;
shortest = abs(w) ;
if (h<0) dy2 = -1 ; else if (h>0) dy2 = 1 ;
dx2 = 0 ;
}
int numerator = longest >> 1 ;
for (int i=0;i<=longest;i++) {
setPixel(x0,y0,color) ;
numerator += shortest ;
if (!(numerator<longest)) {
numerator -= longest ;
x0 += dx1 ;
y0 += dy1 ;
} else {
x0 += dx2 ;
y0 += dy2 ;
}
}