use inline functions instead of casting function pointers
the type casts we were using were causing bad things to happen with gcc builds (still not exactly sure why they aren't in clang builds), since we were casting from a function which expects arguments on the stack to a function type that doesn't. this manifests itself as rewrite_args changing from NULL to a small heap pointer on this line: ``` objmodel.cpp:4108 contained = callattrInternal1(rhs, contains_str, CLASS_ONLY, NULL, ArgPassSpec(1), lhs); ``` that is, the local variable rewrite_args is NULL before the call, and non-NULL after. The actual line that causes the pointer overwrite is in `bindObjIntoArgs`: ``` objmodel.cpp:3043 arg1 = bind_obj; ``` so I'm guessing that since we didn't push things onto the stack before the call to `callattrInternal`, we end up trampling over values in `compareInternal`'s frame.
Showing
Please register or sign in to comment