Program: 33466
Project: 33466
Buggy source:
@Override public boolean onInterceptTouchEvent(MotionEvent ev){
  if (DEBUG)   Log.d(TAG,"String_Node_Str" + ev);
  ensureTarget();
  boolean handled=false;
  float curY=ev.getY();
  if (mReturningToStart && ev.getAction() == MotionEvent.ACTION_DOWN) {
    mReturningToStart=false;
  }
  if (ev.getAction() == MotionEvent.ACTION_DOWN) {
    mCurrPercentage=0;
    mDownEvent=MotionEvent.obtain(ev);
    mPrevY=mDownEvent.getY();
    mCheckValidMotionFlag=true;
    checkHorizontalMove=true;
  }
 else   if (ev.getAction() == MotionEvent.ACTION_MOVE) {
    float yDiff=curY - mDownEvent.getY();
    if (yDiff < 0)     yDiff=-yDiff;
    if (enableHorizontalScroll) {
      MotionEvent event=MotionEvent.obtain(ev);
      int horizontalScrollDirection=ev.getX() > mDownEvent.getX() ? -1 : 1;
      float xDiff=Math.abs(ev.getX() - mDownEvent.getX());
      if (DEBUG) {
        Log.d(TAG,"String_Node_Str" + xDiff + "String_Node_Str"+ yDiff+ "String_Node_Str"+ canViewScrollHorizontally(mTarget,event,0)+ "String_Node_Str"+ checkHorizontalMove+ "String_Node_Str"+ horizontalScrollDirection);
      }
      if (isHorizontalScroll) {
        if (DEBUG)         Log.d(TAG,"String_Node_Str");
        mPrevY=curY;
        checkHorizontalMove=false;
        return false;
      }
 else       if (xDiff <= mTouchSlop) {
        checkHorizontalMove=true;
      }
 else       if (canViewScrollHorizontally(mTarget,event,horizontalScrollDirection) && checkHorizontalMove && xDiff > 2 * yDiff) {
        if (DEBUG)         Log.d(TAG,"String_Node_Str");
        mPrevY=curY;
        isHorizontalScroll=true;
        checkHorizontalMove=false;
        return false;
      }
 else {
        checkHorizontalMove=false;
      }
    }
    if (yDiff < mTouchSlop) {
      mPrevY=curY;
      return false;
    }
  }
 else   if (ev.getAction() == MotionEvent.ACTION_UP) {
    if (enableHorizontalScroll && isHorizontalScroll) {
      if (DEBUG)       Log.d(TAG,"String_Node_Str");
      isHorizontalScroll=false;
      return false;
    }
  }
  if (isEnabled()) {
    MotionEvent event=MotionEvent.obtain(ev);
    if (!mReturningToStart && !canViewScrollUp(mTarget,event)) {
      handled=onTouchEvent(ev);
      if (DEBUG)       Log.d(TAG,"String_Node_Str" + handled);
    }
 else {
      mPrevY=ev.getY();
    }
  }
  boolean ret=!handled ? super.onInterceptTouchEvent(ev) : handled;
  if (DEBUG)   Log.d(TAG,"String_Node_Str" + ret);
  return ret;
}

Fixed version (ground truth):
@Override public boolean onInterceptTouchEvent(MotionEvent ev){
  if (DEBUG)   Log.d(TAG,"String_Node_Str" + ev);
  ensureTarget();
  boolean handled=false;
  float curY=ev.getY();
  if (mReturningToStart && ev.getAction() == MotionEvent.ACTION_DOWN) {
    mReturningToStart=false;
  }
  if (ev.getAction() == MotionEvent.ACTION_DOWN) {
    mCurrPercentage=0;
    mDownEvent=MotionEvent.obtain(ev);
    mPrevY=mDownEvent.getY();
    mCheckValidMotionFlag=true;
    checkHorizontalMove=true;
  }
 else   if (ev.getAction() == MotionEvent.ACTION_MOVE) {
    float yDiff=curY - mDownEvent.getY();
    if (yDiff < 0)     yDiff=-yDiff;
    if (enableHorizontalScroll) {
      MotionEvent event=MotionEvent.obtain(ev);
      int horizontalScrollDirection=ev.getX() > mDownEvent.getX() ? -1 : 1;
      float xDiff=Math.abs(ev.getX() - mDownEvent.getX());
      if (DEBUG) {
        Log.d(TAG,"String_Node_Str" + xDiff + "String_Node_Str"+ mTouchSlop+ "String_Node_Str"+ yDiff+ "String_Node_Str"+ canViewScrollHorizontally(mTarget,MotionEvent.obtain(event),horizontalScrollDirection)+ "String_Node_Str"+ checkHorizontalMove+ "String_Node_Str"+ horizontalScrollDirection);
      }
      if (isHorizontalScroll) {
        if (DEBUG)         Log.d(TAG,"String_Node_Str");
        mPrevY=curY;
        checkHorizontalMove=false;
        return false;
      }
 else       if (xDiff <= mTouchSlop) {
        checkHorizontalMove=true;
      }
 else       if (canViewScrollHorizontally(mTarget,event,horizontalScrollDirection) && checkHorizontalMove && xDiff > 2 * yDiff) {
        if (DEBUG)         Log.d(TAG,"String_Node_Str");
        mPrevY=curY;
        isHorizontalScroll=true;
        checkHorizontalMove=false;
        return false;
      }
 else {
        checkHorizontalMove=false;
      }
    }
    if (yDiff < mTouchSlop) {
      mPrevY=curY;
      return false;
    }
  }
 else   if (ev.getAction() == MotionEvent.ACTION_UP) {
    if (enableHorizontalScroll && isHorizontalScroll) {
      if (DEBUG)       Log.d(TAG,"String_Node_Str");
      isHorizontalScroll=false;
      return false;
    }
  }
  if (isEnabled()) {
    MotionEvent event=MotionEvent.obtain(ev);
    if (!mReturningToStart && !canViewScrollUp(mTarget,event)) {
      handled=onTouchEvent(ev);
      if (DEBUG)       Log.d(TAG,"String_Node_Str" + handled);
    }
 else {
      mPrevY=ev.getY();
    }
  }
  boolean ret=!handled ? super.onInterceptTouchEvent(ev) : handled;
  if (DEBUG)   Log.d(TAG,"String_Node_Str" + ret);
  return ret;
}