From f0fc3acf8719f9b135c194e04b147bd4e068d7e4 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Wed, 22 Aug 2012 18:22:59 +0400 Subject: [PATCH] Turn an assert in vmethod interpose code into a mandatory check and abort. --- library/VTableInterpose.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/library/VTableInterpose.cpp b/library/VTableInterpose.cpp index ad46b0b04..3725ccba7 100644 --- a/library/VTableInterpose.cpp +++ b/library/VTableInterpose.cpp @@ -164,7 +164,13 @@ VMethodInterposeLinkBase::VMethodInterposeLinkBase(virtual_identity *host, int v : host(host), vmethod_idx(vmethod_idx), interpose_method(interpose_method), chain_mptr(chain_mptr), saved_chain(NULL), next(NULL), prev(NULL) { - assert(vmethod_idx >= 0 && interpose_method != NULL); + if (vmethod_idx < 0 || interpose_method == NULL) + { + fprintf(stderr, "Bad VMethodInterposeLinkBase arguments: %d %08x\n", + vmethod_idx, unsigned(interpose_method)); + fflush(stderr); + abort(); + } } VMethodInterposeLinkBase::~VMethodInterposeLinkBase()