mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-04-30 06:14:25 +02:00
ignore updating existing key
This commit is contained in:
parent
6cba5d1d7f
commit
480e66e598
@ -73,6 +73,9 @@ public class ValueHeader extends BlockItem implements JSONConvert<JSONObject> {
|
|||||||
linkStringReference();
|
linkStringReference();
|
||||||
}
|
}
|
||||||
public void setKey(StringItem stringItem){
|
public void setKey(StringItem stringItem){
|
||||||
|
if(ignoreUpdateKey(stringItem)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
unLinkStringReference();
|
unLinkStringReference();
|
||||||
int key = -1;
|
int key = -1;
|
||||||
if(stringItem!=null){
|
if(stringItem!=null){
|
||||||
@ -81,6 +84,17 @@ public class ValueHeader extends BlockItem implements JSONConvert<JSONObject> {
|
|||||||
putInteger(getBytesInternal(), OFFSET_SPEC_REFERENCE, key);
|
putInteger(getBytesInternal(), OFFSET_SPEC_REFERENCE, key);
|
||||||
linkStringReference(stringItem);
|
linkStringReference(stringItem);
|
||||||
}
|
}
|
||||||
|
private boolean ignoreUpdateKey(StringItem stringItem){
|
||||||
|
int key = getKey();
|
||||||
|
ReferenceItem referenceItem = this.mStringReference;
|
||||||
|
if(stringItem == null){
|
||||||
|
return referenceItem == null && key == -1;
|
||||||
|
}
|
||||||
|
if(referenceItem == null || key != stringItem.getIndex()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return getSpecString(key) == stringItem;
|
||||||
|
}
|
||||||
public void setSize(int size){
|
public void setSize(int size){
|
||||||
super.setBytesLength(size, false);
|
super.setBytesLength(size, false);
|
||||||
writeSize();
|
writeSize();
|
||||||
@ -126,11 +140,17 @@ public class ValueHeader extends BlockItem implements JSONConvert<JSONObject> {
|
|||||||
stringItem.removeReference(stringReference);
|
stringItem.removeReference(stringReference);
|
||||||
}
|
}
|
||||||
public StringItem getNameString(){
|
public StringItem getNameString(){
|
||||||
|
return getSpecString(getKey());
|
||||||
|
}
|
||||||
|
private StringItem getSpecString(int key){
|
||||||
|
if(key < 0){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
StringPool<?> specStringPool = getSpecStringPool();
|
StringPool<?> specStringPool = getSpecStringPool();
|
||||||
if(specStringPool==null){
|
if(specStringPool==null){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return specStringPool.get(getKey());
|
return specStringPool.get(key);
|
||||||
}
|
}
|
||||||
private StringPool<?> getSpecStringPool(){
|
private StringPool<?> getSpecStringPool(){
|
||||||
Block parent = getParent();
|
Block parent = getParent();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user