Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit87357f7

Browse files
author
zhourenjian
committed
Fix bug that ClassLoader does not correctly update Class nodes from STATUS_DECLARED to STUATUS_OPTIONAL_LOADED, which results in globalLoaded is not being called.
1 parent3ed138b commit87357f7

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

‎sources/net.sf.j2s.java.core/src/java/lang/ClassLoader.js

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,6 +1340,18 @@ ClazzLoader.tryToLoadNext = function (file) {
13401340
ClazzLoader.updateNode(n);
13411341
lastNode=n;
13421342
}
1343+
vardList=[];
1344+
while((n=ClazzLoader.findNextMustClass(ClazzLoader.clazzTreeRoot,ClazzNode.STATUS_DECLARED))!=null){
1345+
dList[dList.length]=n;
1346+
n.status=ClazzNode.STATUS_OPTIONALS_LOADED;
1347+
}
1348+
while((n=ClazzLoader.findNextOptionalClass(ClazzNode.STATUS_DECLARED))!=null){
1349+
dList[dList.length]=n;
1350+
n.status=ClazzNode.STATUS_OPTIONALS_LOADED;
1351+
}
1352+
for(vari=0;i<dList.length;i++){
1353+
ClazzLoader.updateNode(dList[i]);
1354+
}
13431355

13441356
/*
13451357
* It seems ClazzLoader#globalLoaded is seldom overrided.
@@ -1657,7 +1669,8 @@ ClazzLoader.findNextMustClass = function (node, status) {
16571669
varn=node.musts[i];
16581670
if(n.status==status&&(status!=ClazzNode.STATUS_KNOWN
16591671
||ClazzLoader.loadedScripts[n.path]!=true)
1660-
&&!ClazzLoader.isClassDefined(n.name)){
1672+
&&(status==ClazzNode.STATUS_DECLARED
1673+
||!ClazzLoader.isClassDefined(n.name))){
16611674
returnn;
16621675
}else{
16631676
varnn=ClazzLoader.findNextMustClass(n,status);
@@ -1669,7 +1682,8 @@ ClazzLoader.findNextMustClass = function (node, status) {
16691682
}
16701683
if(node.status==status&&(status!=ClazzNode.STATUS_KNOWN
16711684
||ClazzLoader.loadedScripts[node.path]!=true)
1672-
&&!ClazzLoader.isClassDefined(node.name)){
1685+
&&(status==ClazzNode.STATUS_DECLARED
1686+
||!ClazzLoader.isClassDefined(node.name))){
16731687
returnnode;
16741688
}
16751689
}
@@ -1711,7 +1725,8 @@ ClazzLoader.findNodeNextOptionalClass = function (node, status) {
17111725
varn=ClazzLoader.searchClassArray(node.musts,rnd,status);
17121726
if(n!=null&&(status!=ClazzNode.STATUS_KNOWN
17131727
||ClazzLoader.loadedScripts[n.path]!=true)
1714-
&&!ClazzLoader.isClassDefined(n.name)){
1728+
&&(status==ClazzNode.STATUS_DECLARED
1729+
||!ClazzLoader.isClassDefined(n.name))){
17151730
returnn;
17161731
}
17171732
}
@@ -1720,14 +1735,16 @@ ClazzLoader.findNodeNextOptionalClass = function (node, status) {
17201735
varn=ClazzLoader.searchClassArray(node.optionals,rnd,status);
17211736
if(n!=null&&(status!=ClazzNode.STATUS_KNOWN
17221737
||ClazzLoader.loadedScripts[n.path]!=true)
1723-
&&!ClazzLoader.isClassDefined(n.name)){
1738+
&&(status==ClazzNode.STATUS_DECLARED
1739+
||!ClazzLoader.isClassDefined(n.name))){
17241740
returnn;
17251741
}
17261742
}
17271743
// search itself
17281744
if(node.status==status&&(status!=ClazzNode.STATUS_KNOWN
17291745
||ClazzLoader.loadedScripts[node.path]!=true)
1730-
&&!ClazzLoader.isClassDefined(node.name)){
1746+
&&(status==ClazzNode.STATUS_DECLARED
1747+
||!ClazzLoader.isClassDefined(node.name))){
17311748
returnnode;
17321749
}
17331750
returnnull;
@@ -1739,7 +1756,8 @@ ClazzLoader.searchClassArray = function (arr, rnd, status) {
17391756
varn=arr[i];
17401757
if(n.status==status&&(status!=ClazzNode.STATUS_KNOWN
17411758
||ClazzLoader.loadedScripts[n.path]!=true)
1742-
&&!ClazzLoader.isClassDefined(n.name)){
1759+
&&(status==ClazzNode.STATUS_DECLARED
1760+
||!ClazzLoader.isClassDefined(n.name))){
17431761
returnn;
17441762
}else{
17451763
if(n.random==rnd){

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp