Program: 14239
Project: 14239
Buggy source:
@Override public Drawable getDrawable(String source){
  if (mImageLoader == null || mLoadingDrawable == null || mFailedDrawable == null) {
    throw new RuntimeException("String_Node_Str");
  }
  if (TextUtils.isEmpty(source)) {
    return null;
  }
  if (source.startsWith("String_Node_Str")) {
    source="String_Node_Str" + source;
  }
  if (mMaxSize > 0) {
    if (UrlUtils.isWPComUrl(source)) {
      Map<String,String> params=new ArrayMap<>();
      params.put("String_Node_Str",String.valueOf(mMaxSize));
      params.put("String_Node_Str",IMAGE_QUALITY);
      source=UrlUtils.appendUrlParameters(UrlUtils.removeQuery(source),params);
    }
 else {
      source=PhotonUtils.getPhotonImageUrl(source,mMaxSize,0);
    }
  }
  final RemoteDrawable remote=new RemoteDrawable(mLoadingDrawable,mFailedDrawable);
  mImageLoader.get(source,new ImageLoader.ImageListener(){
    @Override public void onErrorResponse(    VolleyError error){
      remote.displayFailed();
      TextView view=getView();
      if (view != null) {
        view.invalidate();
      }
    }
    @Override public void onResponse(    ImageLoader.ImageContainer response,    boolean isImmediate){
      if (response.getBitmap() == null) {
        AppLog.w(T.UTILS,"String_Node_Str");
      }
      TextView view=getView();
      if (view == null) {
        AppLog.w(T.UTILS,"String_Node_Str");
        return;
      }
      int maxWidth=view.getWidth() - view.getPaddingLeft() - view.getPaddingRight();
      if (mMaxSize > 0 && (maxWidth > mMaxSize || maxWidth == 0)) {
        maxWidth=mMaxSize;
      }
      Drawable drawable=new BitmapDrawable(view.getContext().getResources(),response.getBitmap());
      remote.setRemoteDrawable(drawable,maxWidth);
      if (!isImmediate) {
        view.setText(view.getText());
      }
    }
  }
);
  return remote;
}

Fixed version (ground truth):
@Override public Drawable getDrawable(String source){
  if (mImageLoader == null || mLoadingDrawable == null || mFailedDrawable == null) {
    throw new RuntimeException("String_Node_Str");
  }
  if (TextUtils.isEmpty(source)) {
    return null;
  }
  if (source.startsWith("String_Node_Str")) {
    source="String_Node_Str" + source;
  }
  if (mMaxSize > 0) {
    source=PhotonUtils.getPhotonImageUrl(source,mMaxSize,0);
  }
  final RemoteDrawable remote=new RemoteDrawable(mLoadingDrawable,mFailedDrawable);
  mImageLoader.get(source,new ImageLoader.ImageListener(){
    @Override public void onErrorResponse(    VolleyError error){
      remote.displayFailed();
      TextView view=getView();
      if (view != null) {
        view.invalidate();
      }
    }
    @Override public void onResponse(    ImageLoader.ImageContainer response,    boolean isImmediate){
      if (response.getBitmap() == null) {
        AppLog.w(T.UTILS,"String_Node_Str");
      }
      TextView view=getView();
      if (view == null) {
        AppLog.w(T.UTILS,"String_Node_Str");
        return;
      }
      int maxWidth=view.getWidth() - view.getPaddingLeft() - view.getPaddingRight();
      if (mMaxSize > 0 && (maxWidth > mMaxSize || maxWidth == 0)) {
        maxWidth=mMaxSize;
      }
      Drawable drawable=new BitmapDrawable(view.getContext().getResources(),response.getBitmap());
      remote.setRemoteDrawable(drawable,maxWidth);
      if (!isImmediate) {
        view.setText(view.getText());
      }
    }
  }
);
  return remote;
}