bytedance / bytedance/CodeLocator
super.setOnClickListener 也会插桩导致运行时死循环
- Dominant language
- Java
- Stars
- 2.2k
- Forks
- 182
- PR merge metrics
- No merged PRs in 30d
Description
原始类:
BaseAdView{
public void setOnClickListener(@Nullable View.OnClickListener l) {
this.e = l;
super.setOnClickListener(l);
}
}
插桩后的类
public class BaseAdView extends BaseAdView {
class _lancet {
private _lancet() {
}
@TargetClass(scope = Scope.SELF, value = "android.view.View")
@Proxy("setOnClickListener")
static void com_bytedance_tools_codelocator_lancet_view_ViewLancet_setOnClickListenerSelf(View view, View.OnClickListener onClickListener) {
View view2 = view;
CodeLocator.notifySetOnClickListener(view, Thread.currentThread().getStackTrace());
view.setOnClickListener(onClickListener);
}
}
public void setOnClickListener(View.OnClickListener onClickListener) {
//原始代码是:super.setOnClickListener(onClickListener),这里当成this调用了,导致无限循环
_lancet.com_bytedance_tools_codelocator_lancet_view_ViewLancet_setOnClickListenerSelf(this, onClickListener);
}
}
原因:super.setOnClickListener(onClickListener),这里当成this调用了,导致无限循环
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.