mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
fix: 逻辑错误
This commit is contained in:
parent
8ccd5799a8
commit
72b00f5dff
@ -121,9 +121,11 @@ namespace WXML {
|
|||||||
{
|
{
|
||||||
std::vector<std::pair<WXML::STRTOKEN,std::string>> v10;
|
std::vector<std::pair<WXML::STRTOKEN,std::string>> v10;
|
||||||
WXML::StrSplitList4ClassSuffix(cur.second.data(), "%%HERESUFFIX%%", v10);
|
WXML::StrSplitList4ClassSuffix(cur.second.data(), "%%HERESUFFIX%%", v10);
|
||||||
|
std::string str = a2.str();
|
||||||
for (int j=0; j < v10.size(); j++)
|
for (int j=0; j < v10.size(); j++)
|
||||||
{
|
{
|
||||||
WXML::RenderStrToken(v10[i], a2);
|
WXML::RenderStrToken(v10[j], a2);
|
||||||
|
str = a2.str();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!cur.first)
|
else if (!cur.first)
|
||||||
|
@ -239,13 +239,18 @@ namespace WXSS
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int MarkSelectorRule_i = 0;
|
||||||
// WXSS::CSSTreeLib::MarkSelectorRule::MarkGood
|
// WXSS::CSSTreeLib::MarkSelectorRule::MarkGood
|
||||||
int off_519AD0(std::shared_ptr<WXSS::CSSTreeLib::Rule>& a1, std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> &a2)
|
int off_519AD0(std::shared_ptr<WXSS::CSSTreeLib::Rule>& a1, std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> &a2)
|
||||||
{
|
{
|
||||||
|
MarkSelectorRule_i++;
|
||||||
|
int inner_MarkSelectorRule_i = MarkSelectorRule_i; // TODO: 校对至80
|
||||||
|
// MarkSelectorRule - 0
|
||||||
for (int i = 0; i < a2->offset_120.size(); i++)
|
for (int i = 0; i < a2->offset_120.size(); i++)
|
||||||
{
|
{
|
||||||
auto cur = a2->offset_120[i];
|
auto cur = a2->offset_120[i];
|
||||||
std::string v14 = cur->offset_0;
|
std::string v14 = cur->offset_0;
|
||||||
|
// MarkSelectorRule - 5
|
||||||
if (i)
|
if (i)
|
||||||
{
|
{
|
||||||
if (cur->offset_164 <= a2->offset_120[i - 1]->offset_168)
|
if (cur->offset_164 <= a2->offset_120[i - 1]->offset_168)
|
||||||
@ -259,10 +264,11 @@ namespace WXSS
|
|||||||
auto v6 = cur;
|
auto v6 = cur;
|
||||||
auto v10 = v6->offset_120[0];
|
auto v10 = v6->offset_120[0];
|
||||||
*v5 = v10->offset_24;
|
*v5 = v10->offset_24;
|
||||||
std::shared_ptr<std::string> str(new std::string());
|
// std::shared_ptr<std::string> str(new std::string());
|
||||||
*str = a2->offset_148[0];
|
// *str = a2->offset_148[0];
|
||||||
a2->offset_156->offset_4 = str;
|
// a2->offset_156->offset_4 = str;
|
||||||
return 1;
|
// return 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -332,6 +338,7 @@ namespace WXSS
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// MarkSelectorRule - 10
|
||||||
if (v14[0] != 'F' || strcmp(v14.data() + 1, "_SELECTOR"))
|
if (v14[0] != 'F' || strcmp(v14.data() + 1, "_SELECTOR"))
|
||||||
{
|
{
|
||||||
if (v14[0] == 'F')
|
if (v14[0] == 'F')
|
||||||
@ -343,18 +350,83 @@ namespace WXSS
|
|||||||
auto v6 = cur;
|
auto v6 = cur;
|
||||||
auto v10 = v6->offset_120[0];
|
auto v10 = v6->offset_120[0];
|
||||||
*v5 = v10->offset_24;
|
*v5 = v10->offset_24;
|
||||||
std::shared_ptr<std::string> str(new std::string());
|
// std::shared_ptr<std::string> str(new std::string());
|
||||||
*str = a2->offset_148[0];
|
// *str = a2->offset_148[0];
|
||||||
a2->offset_156->offset_4 = str;
|
// a2->offset_156->offset_4 = str;
|
||||||
return 1;
|
// return 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (v14[0] == 'S' && !strcmp(v14.data() + 1, "ELECTOR"))
|
||||||
|
{
|
||||||
|
auto v13 = cur->offset_120;
|
||||||
|
if (v13.size() == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (auto i = v13.begin(); i != v13.end(); i++)
|
||||||
|
{
|
||||||
|
if ((*i)->offset_0[0] == '$')
|
||||||
|
{
|
||||||
|
if (!strcmp((*i)->offset_0.data() + 1, "NAME"))
|
||||||
|
{
|
||||||
|
std::string lit = (*i)->offset_24.GetLiteral();
|
||||||
|
if (lit[0] == '.' || lit[0] == '@')
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (lit[0] == 'f')
|
||||||
|
{
|
||||||
|
if (!strcmp(lit.data() + 1, "orm"))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (lit[0] == 't')
|
||||||
|
{
|
||||||
|
if (!strcmp(lit.data() + 1, "o"))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (lit[lit.length() - 1] != '%')
|
||||||
|
{
|
||||||
|
// LABEL_32
|
||||||
|
auto v5 = a2->offset_156;
|
||||||
|
auto v10 = *i;
|
||||||
|
*v5 = v10->offset_24;
|
||||||
|
std::shared_ptr<std::string> str(new std::string());
|
||||||
|
*str = a2->offset_148[0];
|
||||||
|
a2->offset_156->offset_4 = str;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!strcmp((*i)->offset_0.data() + 1,"ID"))
|
||||||
|
{
|
||||||
|
auto v5 = a2->offset_156;
|
||||||
|
auto v10 = *i;
|
||||||
|
*v5 = v10->offset_24;
|
||||||
|
std::shared_ptr<std::string> str(new std::string());
|
||||||
|
*str = a2->offset_148[0];
|
||||||
|
a2->offset_156->offset_4 = str;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
auto v5 = a2->offset_156;
|
||||||
|
auto v10 = cur->offset_120[0];
|
||||||
|
*v5 = v10->offset_24;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// MarkSelectorRule - 15
|
||||||
if (cur->offset_120.size() <= 1)
|
if (cur->offset_120.size() <= 1)
|
||||||
{
|
{
|
||||||
// goto LABEL_14;
|
// goto LABEL_14;
|
||||||
@ -362,11 +434,13 @@ namespace WXSS
|
|||||||
auto v6 = cur;
|
auto v6 = cur;
|
||||||
auto v10 = v6->offset_120[0];
|
auto v10 = v6->offset_120[0];
|
||||||
*v5 = v10->offset_24;
|
*v5 = v10->offset_24;
|
||||||
std::shared_ptr<std::string> str(new std::string());
|
// std::shared_ptr<std::string> str(new std::string());
|
||||||
*str = a2->offset_148[0];
|
// *str = a2->offset_148[0];
|
||||||
a2->offset_156->offset_4 = str;
|
// a2->offset_156->offset_4 = str;
|
||||||
return 1;
|
// return 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
// MarkSelectorRule - 20
|
||||||
auto v3 = cur->offset_120[0];
|
auto v3 = cur->offset_120[0];
|
||||||
std::string lit = v3->offset_24.GetLiteral();
|
std::string lit = v3->offset_24.GetLiteral();
|
||||||
if (v3->offset_0[0] != '$'
|
if (v3->offset_0[0] != '$'
|
||||||
@ -379,12 +453,17 @@ namespace WXSS
|
|||||||
auto v6 = cur;
|
auto v6 = cur;
|
||||||
auto v10 = v6->offset_120[0];
|
auto v10 = v6->offset_120[0];
|
||||||
*v5 = v10->offset_24;
|
*v5 = v10->offset_24;
|
||||||
std::shared_ptr<std::string> str(new std::string());
|
// std::shared_ptr<std::string> str(new std::string());
|
||||||
*str = a2->offset_148[0];
|
// *str = a2->offset_148[0];
|
||||||
a2->offset_156->offset_4 = str;
|
// a2->offset_156->offset_4 = str;
|
||||||
return 1;
|
// return 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
std::shared_ptr<std::string> str(new std::string());
|
||||||
|
*str = a2->offset_148[0];
|
||||||
|
a2->offset_156->offset_4 = str;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ namespace WXSS
|
|||||||
void XCompiler::GetHostRule(std::string & a2)
|
void XCompiler::GetHostRule(std::string & a2)
|
||||||
{
|
{
|
||||||
std::string v6;
|
std::string v6;
|
||||||
for (auto i = this->offset_32.rbegin(); i != this->offset_32.rend(); i++)
|
for (auto i = this->offset_32.begin(); i != this->offset_32.end(); i++)
|
||||||
{
|
{
|
||||||
i->second->GetHostRule(v6);
|
i->second->GetHostRule(v6);
|
||||||
}
|
}
|
||||||
@ -349,8 +349,15 @@ namespace WXSS
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GenExpr_i = 0;
|
||||||
|
/**
|
||||||
|
* a4 参数正确
|
||||||
|
*/
|
||||||
void XCompiler::GenExpr(std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> a2, std::stringstream & a3, std::string & a4)
|
void XCompiler::GenExpr(std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> a2, std::stringstream & a3, std::string & a4)
|
||||||
{
|
{
|
||||||
|
GenExpr_i++;
|
||||||
|
int inner_GenExpr_i = GenExpr_i;
|
||||||
auto target = a2->offset_120;
|
auto target = a2->offset_120;
|
||||||
for (int i = 0; i < target.size(); i++)
|
for (int i = 0; i < target.size(); i++)
|
||||||
{
|
{
|
||||||
@ -381,11 +388,14 @@ namespace WXSS
|
|||||||
cur->RenderCode(a4, 1);
|
cur->RenderCode(a4, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
std::string str = a3.str();
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
int GetPageCss_i = 0;
|
||||||
int XCompiler::GetPageCss(std::string const& a2, std::string& a3, uint a4)
|
int XCompiler::GetPageCss(std::string const& a2, std::string& a3, uint a4)
|
||||||
{
|
{
|
||||||
|
GetPageCss_i++;
|
||||||
|
int inner_GetPageCss_i = GetPageCss_i;
|
||||||
if (this->offset_0)
|
if (this->offset_0)
|
||||||
{
|
{
|
||||||
return 6;
|
return 6;
|
||||||
|
@ -44997,7 +44997,7 @@ void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Tok
|
|||||||
{
|
{
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
v3 = *(_DWORD *)(this + 120);
|
v3 = *(_DWORD *)(this + 120); // begin
|
||||||
if ( (*(_DWORD *)(this + 124) - v3) >> 3 <= v12 )
|
if ( (*(_DWORD *)(this + 124) - v3) >> 3 <= v12 )
|
||||||
break;
|
break;
|
||||||
if ( std::operator==<char>(*(_DWORD *)(v3 + 8 * v12), "SELECTORS") )
|
if ( std::operator==<char>(*(_DWORD *)(v3 + 8 * v12), "SELECTORS") )
|
||||||
@ -45028,7 +45028,7 @@ void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Tok
|
|||||||
{
|
{
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
v6 = *(_DWORD *)(this + 120);
|
v6 = *(_DWORD *)(this + 120); // begin
|
||||||
if ( (*(_DWORD *)(this + 124) - v6) >> 3 <= v12 )
|
if ( (*(_DWORD *)(this + 124) - v6) >> 3 <= v12 )
|
||||||
break;
|
break;
|
||||||
v7 = !std::operator==<char>(*(_DWORD *)(v6 + 8 * v12), "SELECTORS");
|
v7 = !std::operator==<char>(*(_DWORD *)(v6 + 8 * v12), "SELECTORS");
|
||||||
@ -45061,7 +45061,7 @@ void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Tok
|
|||||||
}
|
}
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
v11 = *(_DWORD *)(this + 120);
|
v11 = *(_DWORD *)(this + 120); // begin
|
||||||
if ( (*(_DWORD *)(this + 124) - v11) >> 3 <= v12 )
|
if ( (*(_DWORD *)(this + 124) - v11) >> 3 <= v12 )
|
||||||
break;
|
break;
|
||||||
WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(*(_DWORD *)(v11 + 8 * v12++), a2);
|
WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(*(_DWORD *)(v11 + 8 * v12++), a2);
|
||||||
@ -46032,6 +46032,7 @@ char __stdcall WXSS::CSSTreeLib::MarkSelectorRule::MarkGood(
|
|||||||
char *v23; // [esp+68h] [ebp-10h] BYREF
|
char *v23; // [esp+68h] [ebp-10h] BYREF
|
||||||
volatile signed __int32 *v24[3]; // [esp+6Ch] [ebp-Ch] BYREF
|
volatile signed __int32 *v24[3]; // [esp+6Ch] [ebp-Ch] BYREF
|
||||||
|
|
||||||
|
// MarkSelectorRule - 0
|
||||||
for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) )
|
for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) )
|
||||||
{
|
{
|
||||||
v2 = *((_DWORD *)this + 30);
|
v2 = *((_DWORD *)this + 30);
|
||||||
@ -46039,16 +46040,20 @@ char __stdcall WXSS::CSSTreeLib::MarkSelectorRule::MarkGood(
|
|||||||
goto LABEL_39;
|
goto LABEL_39;
|
||||||
Str = *(char **)(v2 + 8 * (_DWORD)lpuexcpt); // cur
|
Str = *(char **)(v2 + 8 * (_DWORD)lpuexcpt); // cur
|
||||||
v14 = *(_DWORD *)Str; // cur
|
v14 = *(_DWORD *)Str; // cur
|
||||||
|
// MarkSelectorRule - 5
|
||||||
if ( lpuexcpt )
|
if ( lpuexcpt )
|
||||||
{
|
{
|
||||||
if ( *((_DWORD *)Str + 41) <= *(_DWORD *)(*(_DWORD *)(v2 + 8 * (_DWORD)lpuexcpt - 8) + 168) )
|
if ( *((_DWORD *)Str + 41) <= *(_DWORD *)(*(_DWORD *)(v2 + 8 * (_DWORD)lpuexcpt - 8) + 168) )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// MarkSelectorRule - 10
|
||||||
if ( *(_BYTE *)v14 != 'F'/*70*/ || strcmp((const char *)(v14 + 1), "_SELECTOR") )
|
if ( *(_BYTE *)v14 != 'F'/*70*/ || strcmp((const char *)(v14 + 1), "_SELECTOR") )
|
||||||
break;
|
break;
|
||||||
v3 = *((_DWORD *)Str + 30); // cur->offset_120
|
v3 = *((_DWORD *)Str + 30); // cur->offset_120
|
||||||
|
// MarkSelectorRule - 15
|
||||||
if ( (unsigned int)(*((_DWORD *)Str + 31) - v3) <= 8 ) // size
|
if ( (unsigned int)(*((_DWORD *)Str + 31) - v3) <= 8 ) // size
|
||||||
goto LABEL_14;
|
goto LABEL_14;
|
||||||
|
// MarkSelectorRule - 20
|
||||||
std::__shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree,(__gnu_cxx::_Lock_policy)2>::__shared_ptr(
|
std::__shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree,(__gnu_cxx::_Lock_policy)2>::__shared_ptr(
|
||||||
&v23,
|
&v23,
|
||||||
(_DWORD *)(v3 + 8));
|
(_DWORD *)(v3 + 8));
|
||||||
@ -46074,7 +46079,7 @@ LABEL_38:
|
|||||||
goto LABEL_35;
|
goto LABEL_35;
|
||||||
goto LABEL_38; // continue;
|
goto LABEL_38; // continue;
|
||||||
}
|
}
|
||||||
v13 = (_DWORD **)*((_DWORD *)Str + 30);
|
v13 = (_DWORD **)*((_DWORD *)Str + 30); // cur->offset_120
|
||||||
if ( *(_BYTE *)v14 == 'S'/*83*/ && !strcmp((const char *)(v14 + 1), "ELECTOR") )
|
if ( *(_BYTE *)v14 == 'S'/*83*/ && !strcmp((const char *)(v14 + 1), "ELECTOR") )
|
||||||
{
|
{
|
||||||
v12 = (_DWORD **)*((_DWORD *)Str + 31);
|
v12 = (_DWORD **)*((_DWORD *)Str + 31);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user