Fix PHYSFSX_check_* for RAIIdmem<T[]>

This commit is contained in:
Kp 2015-01-28 03:42:53 +00:00
parent d2f0bdc867
commit 3952c64ffc
2 changed files with 6 additions and 4 deletions

View file

@ -110,7 +110,7 @@ static inline PHYSFS_sint64 PHYSFSX_check_read(PHYSFS_file *file, const std::uni
template <typename V>
static inline PHYSFS_sint64 PHYSFSX_check_read(PHYSFS_file *file, const RAIIdmem<V> &v, PHYSFS_uint32 S, PHYSFS_uint32 C)
{
return PHYSFSX_check_read(file, static_cast<V *>(v), S, C);
return PHYSFSX_check_read(file, static_cast<typename RAIIdmem<V>::pointer>(v), S, C);
}
template <typename V>
@ -156,7 +156,7 @@ static inline PHYSFS_sint64 PHYSFSX_check_write(PHYSFS_file *file, const std::un
template <typename V>
static inline PHYSFS_sint64 PHYSFSX_check_write(PHYSFS_file *file, const RAIIdmem<V> &v, PHYSFS_uint32 S, PHYSFS_uint32 C)
{
return PHYSFSX_check_write(file, static_cast<V *>(v), S, C);
return PHYSFSX_check_write(file, static_cast<typename RAIIdmem<V>::pointer>(v), S, C);
}
template <typename V>

View file

@ -97,10 +97,12 @@ public:
template <typename U, typename T = typename tt::remove_extent<U>::type>
class RAIIdmem : public std::unique_ptr<U, RAIIdmem_deleter<T>>
{
typedef std::unique_ptr<U, RAIIdmem_deleter<T>> base_ptr;
static_assert(tt::is_pod<T>::value, "RAIIdmem cannot manage non-POD");
public:
DXX_INHERIT_CONSTRUCTORS(RAIIdmem, std::unique_ptr<U, RAIIdmem_deleter<T>>);
operator T*() const
typedef typename base_ptr::pointer pointer;
DXX_INHERIT_CONSTRUCTORS(RAIIdmem, base_ptr);
operator pointer() const
#ifdef DXX_HAVE_CXX11_REF_QUALIFIER
&
#endif