Program: 199030
Project: 199030
Buggy source:
@Override public TypedArray obtainStyledAttributes(AttributeSet set,int[] attrs,int defStyleAttr,int defStyleRes){
  Map<String,String> defaultPropMap=null;
  boolean isPlatformFile=true;
  if (set instanceof BridgeXmlBlockParser) {
    BridgeXmlBlockParser parser=null;
    parser=(BridgeXmlBlockParser)set;
    isPlatformFile=parser.isPlatformFile();
    Object key=parser.getViewCookie();
    if (key != null) {
      defaultPropMap=mDefaultPropMaps.get(key);
      if (defaultPropMap == null) {
        defaultPropMap=new HashMap<String,String>();
        mDefaultPropMaps.put(key,defaultPropMap);
      }
    }
  }
 else   if (set instanceof BridgeLayoutParamsMapAttributes) {
    isPlatformFile=false;
  }
 else   if (set != null) {
    Bridge.getLog().error(LayoutLog.TAG_BROKEN,"String_Node_Str",null);
    return null;
  }
  List<Pair<String,Boolean>> attributeList=searchAttrs(attrs);
  BridgeTypedArray ta=((BridgeResources)mSystemResources).newTypeArray(attrs.length,isPlatformFile);
  String customStyle=null;
  if (set != null) {
    customStyle=set.getAttributeValue(null,"String_Node_Str");
  }
  StyleResourceValue customStyleValues=null;
  if (customStyle != null) {
    ResourceValue item=mRenderResources.findResValue(customStyle,isPlatformFile);
    item=mRenderResources.resolveResValue(item);
    if (item instanceof StyleResourceValue) {
      customStyleValues=(StyleResourceValue)item;
    }
  }
  StyleResourceValue defStyleValues=null;
  if (defStyleAttr != 0) {
    Pair<String,Boolean> defStyleAttribute=searchAttr(defStyleAttr);
    if (defaultPropMap != null) {
      String defStyleName=defStyleAttribute.getFirst();
      if (defStyleAttribute.getSecond()) {
        defStyleName="String_Node_Str" + defStyleName;
      }
      defaultPropMap.put("String_Node_Str",defStyleName);
    }
    ResourceValue item=mRenderResources.findItemInTheme(defStyleAttribute.getFirst(),defStyleAttribute.getSecond());
    if (item != null) {
      item=mRenderResources.findResValue(item.getValue(),false);
      if (item instanceof StyleResourceValue) {
        defStyleValues=(StyleResourceValue)item;
      }
    }
 else {
      Bridge.getLog().error(LayoutLog.TAG_RESOURCES_RESOLVE_THEME_ATTR,String.format("String_Node_Str",defStyleAttribute.getFirst()),null);
    }
  }
 else   if (defStyleRes != 0) {
    boolean isFrameworkRes=true;
    Pair<ResourceType,String> value=Bridge.resolveResourceId(defStyleRes);
    if (value == null) {
      value=mProjectCallback.resolveResourceId(defStyleRes);
      isFrameworkRes=false;
    }
    if (value != null) {
      if ((value.getFirst() == ResourceType.STYLE) || (value.getFirst() == ResourceType.ATTR)) {
        ResourceValue item=mRenderResources.findItemInTheme(value.getSecond(),isFrameworkRes);
        if (item != null) {
          if (item instanceof StyleResourceValue) {
            if (defaultPropMap != null) {
              defaultPropMap.put("String_Node_Str",item.getName());
            }
            defStyleValues=(StyleResourceValue)item;
          }
        }
 else {
          Bridge.getLog().error(null,String.format("String_Node_Str",defStyleRes,value.getSecond()),null);
        }
      }
 else {
        Bridge.getLog().error(null,String.format("String_Node_Str",defStyleRes,value.getFirst().toString()),null);
      }
    }
 else {
      Bridge.getLog().error(null,String.format("String_Node_Str",defStyleRes),null);
    }
  }
  String appNamespace=mProjectCallback.getNamespace();
  if (attributeList != null) {
    for (int index=0; index < attributeList.size(); index++) {
      Pair<String,Boolean> attribute=attributeList.get(index);
      if (attribute == null) {
        continue;
      }
      String attrName=attribute.getFirst();
      boolean frameworkAttr=attribute.getSecond().booleanValue();
      String value=null;
      if (set != null) {
        value=set.getAttributeValue(frameworkAttr ? BridgeConstants.NS_RESOURCES : appNamespace,attrName);
        if (frameworkAttr == false && value == null) {
          value=set.getAttributeValue(BridgeConstants.NS_APP_RES_AUTO,attrName);
        }
      }
      if (value == null) {
        ResourceValue resValue=null;
        if (customStyleValues != null) {
          resValue=mRenderResources.findItemInStyle(customStyleValues,attrName,frameworkAttr);
        }
        if (resValue == null && defStyleValues != null) {
          resValue=mRenderResources.findItemInStyle(defStyleValues,attrName,frameworkAttr);
        }
        if (resValue == null) {
          resValue=mRenderResources.findItemInTheme(attrName,frameworkAttr);
        }
        if (resValue != null) {
          if (defaultPropMap != null) {
            defaultPropMap.put(attrName,resValue.getValue());
          }
          resValue=mRenderResources.resolveResValue(resValue);
        }
        ta.bridgeSetValue(index,attrName,frameworkAttr,resValue);
      }
 else {
        ta.bridgeSetValue(index,attrName,frameworkAttr,mRenderResources.resolveValue(null,attrName,value,isPlatformFile));
      }
    }
  }
  ta.sealArray();
  return ta;
}

Fixed version (ground truth):
@Override public TypedArray obtainStyledAttributes(AttributeSet set,int[] attrs,int defStyleAttr,int defStyleRes){
  Map<String,String> defaultPropMap=null;
  boolean isPlatformFile=true;
  if (set instanceof BridgeXmlBlockParser) {
    BridgeXmlBlockParser parser=null;
    parser=(BridgeXmlBlockParser)set;
    isPlatformFile=parser.isPlatformFile();
    Object key=parser.getViewCookie();
    if (key != null) {
      defaultPropMap=mDefaultPropMaps.get(key);
      if (defaultPropMap == null) {
        defaultPropMap=new HashMap<String,String>();
        mDefaultPropMaps.put(key,defaultPropMap);
      }
    }
  }
 else   if (set instanceof BridgeLayoutParamsMapAttributes) {
    isPlatformFile=false;
  }
 else   if (set != null) {
    Bridge.getLog().error(LayoutLog.TAG_BROKEN,"String_Node_Str",null);
    return null;
  }
  List<Pair<String,Boolean>> attributeList=searchAttrs(attrs);
  BridgeTypedArray ta=((BridgeResources)mSystemResources).newTypeArray(attrs.length,isPlatformFile);
  String customStyle=null;
  if (set != null) {
    customStyle=set.getAttributeValue(null,"String_Node_Str");
  }
  StyleResourceValue customStyleValues=null;
  if (customStyle != null) {
    ResourceValue item=mRenderResources.findResValue(customStyle,isPlatformFile);
    item=mRenderResources.resolveResValue(item);
    if (item instanceof StyleResourceValue) {
      customStyleValues=(StyleResourceValue)item;
    }
  }
  StyleResourceValue defStyleValues=null;
  if (defStyleAttr != 0) {
    Pair<String,Boolean> defStyleAttribute=searchAttr(defStyleAttr);
    if (defaultPropMap != null) {
      String defStyleName=defStyleAttribute.getFirst();
      if (defStyleAttribute.getSecond()) {
        defStyleName="String_Node_Str" + defStyleName;
      }
      defaultPropMap.put("String_Node_Str",defStyleName);
    }
    ResourceValue item=mRenderResources.findItemInTheme(defStyleAttribute.getFirst(),defStyleAttribute.getSecond());
    if (item != null) {
      item=mRenderResources.findResValue(item.getValue(),item.isFramework());
      if (item instanceof StyleResourceValue) {
        defStyleValues=(StyleResourceValue)item;
      }
    }
 else {
      Bridge.getLog().error(LayoutLog.TAG_RESOURCES_RESOLVE_THEME_ATTR,String.format("String_Node_Str",defStyleAttribute.getFirst()),null);
    }
  }
 else   if (defStyleRes != 0) {
    boolean isFrameworkRes=true;
    Pair<ResourceType,String> value=Bridge.resolveResourceId(defStyleRes);
    if (value == null) {
      value=mProjectCallback.resolveResourceId(defStyleRes);
      isFrameworkRes=false;
    }
    if (value != null) {
      if ((value.getFirst() == ResourceType.STYLE) || (value.getFirst() == ResourceType.ATTR)) {
        ResourceValue item=mRenderResources.findItemInTheme(value.getSecond(),isFrameworkRes);
        if (item != null) {
          if (item instanceof StyleResourceValue) {
            if (defaultPropMap != null) {
              defaultPropMap.put("String_Node_Str",item.getName());
            }
            defStyleValues=(StyleResourceValue)item;
          }
        }
 else {
          Bridge.getLog().error(null,String.format("String_Node_Str",defStyleRes,value.getSecond()),null);
        }
      }
 else {
        Bridge.getLog().error(null,String.format("String_Node_Str",defStyleRes,value.getFirst().toString()),null);
      }
    }
 else {
      Bridge.getLog().error(null,String.format("String_Node_Str",defStyleRes),null);
    }
  }
  String appNamespace=mProjectCallback.getNamespace();
  if (attributeList != null) {
    for (int index=0; index < attributeList.size(); index++) {
      Pair<String,Boolean> attribute=attributeList.get(index);
      if (attribute == null) {
        continue;
      }
      String attrName=attribute.getFirst();
      boolean frameworkAttr=attribute.getSecond().booleanValue();
      String value=null;
      if (set != null) {
        value=set.getAttributeValue(frameworkAttr ? BridgeConstants.NS_RESOURCES : appNamespace,attrName);
        if (frameworkAttr == false && value == null) {
          value=set.getAttributeValue(BridgeConstants.NS_APP_RES_AUTO,attrName);
        }
      }
      if (value == null) {
        ResourceValue resValue=null;
        if (customStyleValues != null) {
          resValue=mRenderResources.findItemInStyle(customStyleValues,attrName,frameworkAttr);
        }
        if (resValue == null && defStyleValues != null) {
          resValue=mRenderResources.findItemInStyle(defStyleValues,attrName,frameworkAttr);
        }
        if (resValue == null) {
          resValue=mRenderResources.findItemInTheme(attrName,frameworkAttr);
        }
        if (resValue != null) {
          if (defaultPropMap != null) {
            defaultPropMap.put(attrName,resValue.getValue());
          }
          resValue=mRenderResources.resolveResValue(resValue);
        }
        ta.bridgeSetValue(index,attrName,frameworkAttr,resValue);
      }
 else {
        ta.bridgeSetValue(index,attrName,frameworkAttr,mRenderResources.resolveValue(null,attrName,value,isPlatformFile));
      }
    }
  }
  ta.sealArray();
  return ta;
}