Skip to content

Commit

Permalink
Workaround C++0x pair<> constructor with null pointer issue.
Browse files Browse the repository at this point in the history
This is present in both GCC4.4 and MSVC10. See:

  http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#811
  • Loading branch information
ThomasNelson authored and Daniel Wallin committed Feb 22, 2010
1 parent 812c97a commit b158edf
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion luabind/detail/instance_holder.hpp
Expand Up @@ -98,7 +98,7 @@ class pointer_holder : public instance_holder
weak ? weak : get_pointer(p)));

if (!naked_ptr)
return std::pair<void*, int>(0, 0);
return std::pair<void*, int>((void*)0, 0);

return get_class()->casts().cast(
naked_ptr
Expand Down
2 changes: 1 addition & 1 deletion luabind/detail/object_rep.hpp
Expand Up @@ -55,7 +55,7 @@ namespace luabind { namespace detail
std::pair<void*, int> get_instance(class_id target) const
{
if (m_instance == 0)
return std::pair<void*, int>(0, -1);
return std::pair<void*, int>((void*)0, -1);
return m_instance->get(target);
}

Expand Down
2 changes: 1 addition & 1 deletion src/class_rep.cpp
Expand Up @@ -123,7 +123,7 @@ luabind::detail::class_rep::allocate(lua_State* L) const
{
const int size = sizeof(object_rep);
char* mem = static_cast<char*>(lua_newuserdata(L, size));
return std::pair<void*,void*>(mem, 0);
return std::pair<void*,void*>(mem, (void*)0);
}

namespace
Expand Down
6 changes: 3 additions & 3 deletions src/inheritance.cpp
Expand Up @@ -144,7 +144,7 @@ std::pair<void*, int> cast_graph::impl::cast(
return std::make_pair(p, 0);

if (src >= m_vertices.size() || target >= m_vertices.size())
return std::pair<void*, int>(0, -1);
return std::pair<void*, int>((void*)0, -1);

std::ptrdiff_t const object_offset =
(char const*)dynamic_ptr - (char const*)p;
Expand All @@ -154,7 +154,7 @@ std::pair<void*, int> cast_graph::impl::cast(
if (cached.first != cache::unknown)
{
if (cached.first == cache::invalid)
return std::pair<void*, int>(0, -1);
return std::pair<void*, int>((void*)0, -1);
return std::make_pair((char*)p + cached.first, cached.second);
}

Expand Down Expand Up @@ -192,7 +192,7 @@ std::pair<void*, int> cast_graph::impl::cast(

m_cache.put(src, target, dynamic_id, object_offset, cache::invalid, -1);

return std::pair<void*, int>(0, -1);
return std::pair<void*, int>((void*)0, -1);
}

void cast_graph::impl::insert(
Expand Down

0 comments on commit b158edf

Please sign in to comment.