Program: 92529
Project: 92529
Buggy source:
@Override public boolean dispatchTouchEvent(MotionEvent e){
  if (!isEnabled() || mContent == null || mHeaderView == null) {
    return dispatchTouchEventSupper(e);
  }
  int action=e.getAction();
switch (action) {
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
    mPtrIndicator.onRelease();
  if (mPtrIndicator.hasLeftStartPosition()) {
    if (DEBUG) {
      PtrCLog.d(LOG_TAG,"String_Node_Str");
    }
    onRelease(false);
    if (mPtrIndicator.hasMovedAfterPressedDown()) {
      sendCancelEvent();
      return true;
    }
    return dispatchTouchEventSupper(e);
  }
 else {
    return dispatchTouchEventSupper(e);
  }
case MotionEvent.ACTION_DOWN:
mHasSendCancelEvent=false;
mDownEvent=e;
mPtrIndicator.onPressDown(e.getX(),e.getY());
mScrollChecker.abortIfWorking();
mPreventForHorizontal=false;
if (mPtrIndicator.hasLeftStartPosition()) {
}
 else {
dispatchTouchEventSupper(e);
}
return true;
case MotionEvent.ACTION_MOVE:
mLastMoveEvent=e;
mPtrIndicator.onMove(e.getX(),e.getY());
float offsetX=mPtrIndicator.getOffsetX();
float offsetY=mPtrIndicator.getOffsetY();
if (mDisableWhenHorizontalMove && !mPreventForHorizontal && (Math.abs(offsetX) > mPagingTouchSlop || Math.abs(offsetX) > 3 * Math.abs(offsetY))) {
if (mPtrIndicator.isInStartPosition()) {
mPreventForHorizontal=true;
}
}
if (mPreventForHorizontal) {
return dispatchTouchEventSupper(e);
}
boolean moveDown=offsetY > 0;
boolean moveUp=!moveDown;
boolean canMoveUp=mPtrIndicator.hasLeftStartPosition();
if (DEBUG) {
boolean canMoveDown=mPtrHandler != null && mPtrHandler.checkCanDoRefresh(this,mContent,mHeaderView);
PtrCLog.v(LOG_TAG,"String_Node_Str",offsetY,mPtrIndicator.getCurrentPosY(),moveUp,canMoveUp,moveDown,canMoveDown);
}
if (moveDown && mPtrHandler != null && !mPtrHandler.checkCanDoRefresh(this,mContent,mHeaderView)) {
return dispatchTouchEventSupper(e);
}
if ((moveUp && canMoveUp) || moveDown) {
movePos(offsetY);
return true;
}
}
return dispatchTouchEventSupper(e);
}

Fixed version (ground truth):
@Override public boolean dispatchTouchEvent(MotionEvent e){
  if (!isEnabled() || mContent == null || mHeaderView == null) {
    return dispatchTouchEventSupper(e);
  }
  int action=e.getAction();
switch (action) {
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
    mPtrIndicator.onRelease();
  if (mPtrIndicator.hasLeftStartPosition()) {
    if (DEBUG) {
      PtrCLog.d(LOG_TAG,"String_Node_Str");
    }
    onRelease(false);
    if (mPtrIndicator.hasMovedAfterPressedDown()) {
      sendCancelEvent();
      return true;
    }
    return dispatchTouchEventSupper(e);
  }
 else {
    return dispatchTouchEventSupper(e);
  }
case MotionEvent.ACTION_DOWN:
mHasSendCancelEvent=false;
mDownEvent=e;
mPtrIndicator.onPressDown(e.getX(),e.getY());
mScrollChecker.abortIfWorking();
mPreventForHorizontal=false;
if (mPtrIndicator.hasLeftStartPosition()) {
}
 else {
dispatchTouchEventSupper(e);
}
return true;
case MotionEvent.ACTION_MOVE:
mLastMoveEvent=e;
mPtrIndicator.onMove(e.getX(),e.getY());
float offsetX=mPtrIndicator.getOffsetX();
float offsetY=mPtrIndicator.getOffsetY();
if (mDisableWhenHorizontalMove && !mPreventForHorizontal && (Math.abs(offsetX) > mPagingTouchSlop && Math.abs(offsetX) > Math.abs(offsetY))) {
if (mPtrIndicator.isInStartPosition()) {
mPreventForHorizontal=true;
}
}
if (mPreventForHorizontal) {
return dispatchTouchEventSupper(e);
}
boolean moveDown=offsetY > 0;
boolean moveUp=!moveDown;
boolean canMoveUp=mPtrIndicator.hasLeftStartPosition();
if (DEBUG) {
boolean canMoveDown=mPtrHandler != null && mPtrHandler.checkCanDoRefresh(this,mContent,mHeaderView);
PtrCLog.v(LOG_TAG,"String_Node_Str",offsetY,mPtrIndicator.getCurrentPosY(),moveUp,canMoveUp,moveDown,canMoveDown);
}
if (moveDown && mPtrHandler != null && !mPtrHandler.checkCanDoRefresh(this,mContent,mHeaderView)) {
return dispatchTouchEventSupper(e);
}
if ((moveUp && canMoveUp) || moveDown) {
movePos(offsetY);
return true;
}
}
return dispatchTouchEventSupper(e);
}