Program: 53117
Project: 53117
Buggy source:
@Override public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable {
  prefs.reload();
  mClockShowDow=prefs.getBoolean(GravityBoxSettings.PREF_KEY_STATUSBAR_CLOCK_DOW,false);
  mAmPmHide=prefs.getBoolean(GravityBoxSettings.PREF_KEY_STATUSBAR_CLOCK_AMPM_HIDE,false);
  mClockHide=prefs.getBoolean(GravityBoxSettings.PREF_KEY_STATUSBAR_CLOCK_HIDE,false);
  mAlarmHide=prefs.getBoolean(GravityBoxSettings.PREF_KEY_ALARM_ICON_HIDE,false);
  mIconArea=(ViewGroup)liparam.view.findViewById(liparam.res.getIdentifier("String_Node_Str","String_Node_Str",PACKAGE_NAME));
  if (mIconArea == null)   return;
  mRootView=(ViewGroup)mIconArea.getParent().getParent();
  if (mRootView == null)   return;
  mClock=(TextView)mIconArea.findViewById(liparam.res.getIdentifier("String_Node_Str","String_Node_Str",PACKAGE_NAME));
  if (mClock == null)   return;
  ModStatusbarColor.setClock(mClock);
  XposedHelpers.setAdditionalInstanceField(mClock,"String_Node_Str",true);
  mClockOriginalPaddingLeft=mClock.getPaddingLeft();
  if (mClockHide) {
    mClock.setVisibility(View.GONE);
  }
  final ViewGroup panelHolder=(ViewGroup)liparam.view.findViewById(liparam.res.getIdentifier("String_Node_Str","String_Node_Str",PACKAGE_NAME));
  if (panelHolder != null) {
    mClockExpanded=(TextView)panelHolder.findViewById(liparam.res.getIdentifier("String_Node_Str","String_Node_Str",PACKAGE_NAME));
  }
  mLayoutClock=new LinearLayout(liparam.view.getContext());
  mLayoutClock.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
  mLayoutClock.setGravity(Gravity.CENTER);
  mLayoutClock.setVisibility(View.GONE);
  mRootView.addView(mLayoutClock);
  log("String_Node_Str");
  XposedHelpers.findAndHookMethod(mClock.getClass(),"String_Node_Str",new XC_MethodHook(){
    @Override protected void afterHookedMethod(    MethodHookParam param) throws Throwable {
      Object sbClock=XposedHelpers.getAdditionalInstanceField(param.thisObject,"String_Node_Str");
      Calendar calendar=Calendar.getInstance(TimeZone.getDefault());
      String clockText=param.getResult().toString();
      String amPm=calendar.getDisplayName(Calendar.AM_PM,Calendar.SHORT,Locale.getDefault());
      int amPmIndex=clockText.indexOf(amPm);
      if (mAmPmHide && amPmIndex != -1) {
        clockText=clockText.replace(amPm,"String_Node_Str");
        amPmIndex=-1;
      }
 else       if (!DateFormat.is24HourFormat(mClock.getContext()) && amPmIndex == -1) {
        clockText+="String_Node_Str" + amPm;
        amPmIndex=clockText.indexOf(amPm);
      }
      CharSequence dow="String_Node_Str";
      if (mClockShowDow && sbClock != null) {
        dow=calendar.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.SHORT,Locale.getDefault()) + "String_Node_Str";
      }
      clockText=dow + clockText;
      SpannableStringBuilder sb=new SpannableStringBuilder(clockText);
      sb.setSpan(new RelativeSizeSpan(0.7f),0,dow.length(),Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
      if (amPmIndex > -1) {
        int offset=Character.isWhitespace(clockText.charAt(dow.length() + amPmIndex - 1)) ? 1 : 0;
        sb.setSpan(new RelativeSizeSpan(0.7f),dow.length() + amPmIndex - offset,dow.length() + amPmIndex + amPm.length(),Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
      }
      param.setResult(sb);
    }
  }
);
  setClockPosition(prefs.getBoolean(GravityBoxSettings.PREF_KEY_STATUSBAR_CENTER_CLOCK,false));
}

Fixed version (ground truth):
@Override public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable {
  prefs.reload();
  mClockShowDow=prefs.getBoolean(GravityBoxSettings.PREF_KEY_STATUSBAR_CLOCK_DOW,false);
  mAmPmHide=prefs.getBoolean(GravityBoxSettings.PREF_KEY_STATUSBAR_CLOCK_AMPM_HIDE,false);
  mClockHide=prefs.getBoolean(GravityBoxSettings.PREF_KEY_STATUSBAR_CLOCK_HIDE,false);
  mAlarmHide=prefs.getBoolean(GravityBoxSettings.PREF_KEY_ALARM_ICON_HIDE,false);
  mIconArea=(ViewGroup)liparam.view.findViewById(liparam.res.getIdentifier("String_Node_Str","String_Node_Str",PACKAGE_NAME));
  if (mIconArea == null)   return;
  mRootView=(ViewGroup)mIconArea.getParent().getParent();
  if (mRootView == null)   return;
  mClock=(TextView)mIconArea.findViewById(liparam.res.getIdentifier("String_Node_Str","String_Node_Str",PACKAGE_NAME));
  if (mClock == null)   return;
  ModStatusbarColor.setClock(mClock);
  XposedHelpers.setAdditionalInstanceField(mClock,"String_Node_Str",true);
  mClockOriginalPaddingLeft=mClock.getPaddingLeft();
  if (mClockHide) {
    mClock.setVisibility(View.GONE);
  }
  final ViewGroup panelHolder=(ViewGroup)liparam.view.findViewById(liparam.res.getIdentifier("String_Node_Str","String_Node_Str",PACKAGE_NAME));
  if (panelHolder != null) {
    mClockExpanded=(TextView)panelHolder.findViewById(liparam.res.getIdentifier("String_Node_Str","String_Node_Str",PACKAGE_NAME));
  }
  mLayoutClock=new LinearLayout(liparam.view.getContext());
  mLayoutClock.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
  mLayoutClock.setGravity(Gravity.CENTER);
  mLayoutClock.setVisibility(View.GONE);
  mRootView.addView(mLayoutClock);
  log("String_Node_Str");
  XposedHelpers.findAndHookMethod(mClock.getClass(),"String_Node_Str",new XC_MethodHook(){
    @Override protected void afterHookedMethod(    MethodHookParam param) throws Throwable {
      if (DEBUG)       log("String_Node_Str" + mAmPmHide);
      Object sbClock=XposedHelpers.getAdditionalInstanceField(param.thisObject,"String_Node_Str");
      if (DEBUG)       log("String_Node_Str" + (sbClock == null ? "String_Node_Str" : "String_Node_Str"));
      Calendar calendar=Calendar.getInstance(TimeZone.getDefault());
      String clockText=param.getResult().toString();
      if (DEBUG)       log("String_Node_Str" + clockText + "String_Node_Str");
      String amPm=calendar.getDisplayName(Calendar.AM_PM,Calendar.SHORT,Locale.getDefault());
      if (DEBUG)       log("String_Node_Str" + amPm + "String_Node_Str");
      int amPmIndex=clockText.indexOf(amPm);
      if (DEBUG)       log("String_Node_Str" + amPmIndex);
      if (mAmPmHide && amPmIndex != -1) {
        clockText=clockText.replace(amPm,"String_Node_Str").trim();
        if (DEBUG)         log("String_Node_Str" + clockText + "String_Node_Str");
        amPmIndex=-1;
      }
 else       if (!mAmPmHide && !DateFormat.is24HourFormat(mClock.getContext()) && amPmIndex == -1) {
        clockText+="String_Node_Str" + amPm;
        amPmIndex=clockText.indexOf(amPm);
        if (DEBUG)         log("String_Node_Str" + clockText + "String_Node_Str"+ amPmIndex);
      }
      CharSequence dow="String_Node_Str";
      if (mClockShowDow && sbClock != null) {
        dow=calendar.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.SHORT,Locale.getDefault()) + "String_Node_Str";
      }
      clockText=dow + clockText;
      SpannableStringBuilder sb=new SpannableStringBuilder(clockText);
      sb.setSpan(new RelativeSizeSpan(0.7f),0,dow.length(),Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
      if (amPmIndex > -1) {
        int offset=Character.isWhitespace(clockText.charAt(dow.length() + amPmIndex - 1)) ? 1 : 0;
        sb.setSpan(new RelativeSizeSpan(0.7f),dow.length() + amPmIndex - offset,dow.length() + amPmIndex + amPm.length(),Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
      }
      if (DEBUG)       log("String_Node_Str" + sb + "String_Node_Str");
      param.setResult(sb);
    }
  }
);
  setClockPosition(prefs.getBoolean(GravityBoxSettings.PREF_KEY_STATUSBAR_CENTER_CLOCK,false));
}