ff下出现too much recursion ie崩溃的原因

本文描述了一个关于窗体中form包含两个互相约束的dateField的问题。在同时设置这两个日期字段的值时出现了循环调用的问题,移除其中一个约束后问题得到解决。
窗体中有一form,form中有两个dateField,互相约束开始时间和结束时间。
在同时为两个dateField赋值后,导致出现此问题。
去掉其中一个约束后,可正常运行。

另:出现这种问题的原因,通常为函数循环调用
__int64 __fastcall sub_2FF5A0(__int64 a1, __int64 a2, _DWORD *a3, __int64 a4, char a5) { __int64 v5; // x0 __int64 v6; // x0 __int64 result; // x0 __int64 v8; // [xsp+10h] [xbp-440h] __int64 v9; // [xsp+20h] [xbp-430h] unsigned int v10; // [xsp+40h] [xbp-410h] __int64 v11; // [xsp+70h] [xbp-3E0h] __int64 v14; // [xsp+90h] [xbp-3C0h] int m; // [xsp+9Ch] [xbp-3B4h] __int64 v16; // [xsp+A0h] [xbp-3B0h] int k; // [xsp+B8h] [xbp-398h] unsigned int v18; // [xsp+CCh] [xbp-384h] __int16 v19; // [xsp+D0h] [xbp-380h] unsigned int v20; // [xsp+D4h] [xbp-37Ch] unsigned int v21; // [xsp+E8h] [xbp-368h] unsigned __int8 j; // [xsp+ECh] [xbp-364h] void *v23; // [xsp+F0h] [xbp-360h] unsigned int v24; // [xsp+F8h] [xbp-358h] unsigned __int8 i; // [xsp+FCh] [xbp-354h] unsigned __int8 v26; // [xsp+100h] [xbp-350h] char v27; // [xsp+104h] [xbp-34Ch] _BYTE v29[8]; // [xsp+208h] [xbp-248h] BYREF __int64 v30; // [xsp+210h] [xbp-240h] BYREF __int64 v31; // [xsp+218h] [xbp-238h] BYREF _DWORD *v32; // [xsp+220h] [xbp-230h] __int64 v33; // [xsp+228h] [xbp-228h] _OWORD v34[32]; // [xsp+230h] [xbp-220h] BYREF __int64 v35; // [xsp+438h] [xbp-18h] v35 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40); v33 = a2; v32 = a3; v27 = a5 & 1; *(_BYTE *)(a1 + 24) = sub_2F6EF8(a2, a3); *(_BYTE *)(a1 + 25) = sub_2F6EF8(v33, v32); if ( *(_BYTE *)(a1 + 24) == 3 && *(unsigned __int8 *)(a1 + 25) == 240 ) { v26 = sub_2F6EF8(v33, v32); memset(v34, 0, sizeof(v34)); for ( i = 0; i < (int)v26; ++i ) *((_BYTE *)v34 + i) = *(_BYTE *)(v33 + (unsigned int)(*v32)++) ^ 0xB6; sub_2F9B50(a1 + 40, v34); } switch ( *(_BYTE *)(a1 + 24) ) { case 1: if ( *(_BYTE *)(a1 + 25) != 7 && *(_BYTE *)(a1 + 25) != 5 && *(_BYTE *)(a1 + 25) != 9 ) *(_BYTE *)(a1 + 27) = sub_2F6EF8(v33, v32); switch ( *(_BYTE *)(a1 + 25) ) { case 5: if ( (v27 & 1) != 0 ) { v24 = sub_2F7024(v33, v32); if ( v24 < (unsigned __int64)sub_2E3A58(&unk_57A1A8) ) { v11 = sub_2FF574(&unk_57A1A8, v24); sub_2FA408(a1 + 40, v11); } } else { *(_BYTE *)(a1 + 27) = sub_2F6EF8(v33, v32); if ( *(_BYTE *)(a1 + 27) ) { v23 = (void *)sub_519B58((unsigned int)*(unsigned __int8 *)(a1 + 27) + 1, &unk_117F88); if ( v23 ) { memset(v23, 0, (unsigned int)*(unsigned __int8 *)(a1 + 27) + 1); for ( j = 0; j < (int)*(unsigned __int8 *)(a1 + 27); ++j ) *((_BYTE *)v23 + j) = *(_BYTE *)(v33 + *v32 + (unsigned int)j) ^ 0xB6; sub_2F9B50(a1 + 40, v23); sub_519B98(v23); } *v32 += *(unsigned __int8 *)(a1 + 27); } } goto LABEL_89; case 4: if ( *(_BYTE *)(a1 + 27) != 4 ) goto LABEL_89; LABEL_41: *(_QWORD *)(a1 + 32) = (unsigned int)sub_2F7024(v33, v32); goto LABEL_89; case 3: if ( *(_BYTE *)(a1 + 27) != 4 ) goto LABEL_89; goto LABEL_41; case 1: case 6: if ( *(_BYTE *)(a1 + 27) != 1 ) goto LABEL_89; LABEL_35: *(_QWORD *)(a1 + 32) = (unsigned __int8)sub_2F6EF8(v33, v32); goto LABEL_89; case 2: switch ( *(_BYTE *)(a1 + 27) ) { case 1: goto LABEL_35; case 2: *(_QWORD *)(a1 + 32) = (unsigned __int16)sub_2F6F40(v33, v32, 0); goto LABEL_89; case 4: goto LABEL_41; case 8: *(_QWORD *)(a1 + 32) = sub_2F7150(v33, v32); break; } break; case 7: v21 = *(_DWORD *)(v33 + (unsigned int)*v32); *(_QWORD *)(a1 + 16) = sub_519B50(v21 + 22); if ( *(_QWORD *)(a1 + 16) ) { memset(*(void **)(a1 + 16), 0, v21 + 22); **(_WORD **)(a1 + 16) = 4; memcpy((void *)(*(_QWORD *)(a1 + 16) + 2LL), (const void *)(v33 + (unsigned int)*v32), v21 + 4LL); } *v32 += v21 + 4; break; case 9: v20 = sub_2F7024(v33, v32); v19 = sub_2F6F40(v33, v32, 0); v18 = *(_DWORD *)(v33 + (unsigned int)*v32); *(_QWORD *)(a1 + 16) = sub_519B50(v18 + 22); if ( v20 > v18 ) v10 = v18; else v10 = v20; if ( *(_QWORD *)(a1 + 16) ) { memset(*(void **)(a1 + 16), 0, v18 + 22); **(_WORD **)(a1 + 16) = v19; memcpy((void *)(*(_QWORD *)(a1 + 16) + 2LL), (const void *)(v33 + (unsigned int)*v32), v10 + 4LL); } *v32 += v20 + 4; break; } break; case 2: case 3: if ( *(_BYTE *)(a1 + 25) == 29 || *(_BYTE *)(a1 + 25) == 27 ) *(_WORD *)(a1 + 28) = sub_2F6F40(v33, v32, 0); *(_BYTE *)(a1 + 26) = sub_2F6EF8(v33, v32); for ( k = 0; k < *(unsigned __int8 *)(a1 + 26); ++k ) { v9 = sub_519AE0(96); sub_2FE42C(); v31 = v9; sub_2FF5A0(v9, v33, v32, a4, v27 & 1); sub_2FF4E0(a1 + 64, &v31); } if ( *(_BYTE *)(a1 + 24) == 3 && (*(_BYTE *)(a1 + 25) == 2 || *(_BYTE *)(a1 + 25) == 1 || *(_BYTE *)(a1 + 25) == 66 || *(_BYTE *)(a1 + 25) == 50 || *(unsigned __int8 *)(a1 + 25) == 136 || *(unsigned __int8 *)(a1 + 25) == 137) ) { if ( *(_BYTE *)(a1 + 26) ) { v5 = sub_2FF548(a1 + 64, 0); v16 = *(_QWORD *)v5; if ( *(_BYTE *)(*(_QWORD *)v5 + 24LL) == 1 && *(_BYTE *)(v16 + 25) == 2 ) *(_QWORD *)(v16 + 32) += a4; } } break; case 4: *(_BYTE *)(a1 + 26) = sub_2F6EF8(v33, v32); for ( m = 0; m < *(unsigned __int8 *)(a1 + 26); ++m ) { v8 = sub_519AE0(96); sub_2FE42C(); v30 = v8; sub_2FF5A0(v8, v33, v32, a4, v27 & 1); sub_2FF4E0(a1 + 64, &v30); } if ( *(_BYTE *)(a1 + 25) == 1 || *(_BYTE *)(a1 + 25) == 3 || *(_BYTE *)(a1 + 25) == 4 || *(_BYTE *)(a1 + 25) == 5 ) { if ( *(_BYTE *)(a1 + 26) ) { v6 = sub_2FF548(a1 + 64, 0); v14 = *(_QWORD *)v6; if ( *(_BYTE *)(*(_QWORD *)v6 + 24LL) == 1 && *(_BYTE *)(v14 + 25) == 2 ) *(_QWORD *)(v14 + 32) += a4; } } break; } LABEL_89: sub_2F3EB8(v29); *(_DWORD *)(a1 + 88) = sub_2F4138(v29, a1 + 24, 4); result = sub_2F409C(v29); _ReadStatusReg(TPIDR_EL0); return result; } do same for this sudocode also
最新发布
12-14
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值