From fb95b532bdf6538802f456638372d74980d66c8c Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 27 Jan 2023 17:44:58 +0530 Subject: [PATCH] Make MSVC happy --- src/calibre/devices/mtp/windows/content_enumeration.cpp | 2 +- src/calibre/devices/mtp/windows/global.h | 4 ++-- src/calibre/utils/cpp_binding.h | 5 +++-- src/calibre/utils/windows/common.h | 3 ++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/calibre/devices/mtp/windows/content_enumeration.cpp b/src/calibre/devices/mtp/windows/content_enumeration.cpp index 3c1b8503eb..729b6910c2 100644 --- a/src/calibre/devices/mtp/windows/content_enumeration.cpp +++ b/src/calibre/devices/mtp/windows/content_enumeration.cpp @@ -555,7 +555,7 @@ wpd::get_file(IPortableDevice *device, const wchar_t *object_id, PyObject *dest, return NULL; } - generic_raii buf(reinterpret_cast(PyMem_Malloc(bufsize))); + generic_raii buf(reinterpret_cast(PyMem_Malloc(bufsize))); if (!buf) return PyErr_NoMemory(); while (total_read < filesize) { diff --git a/src/calibre/devices/mtp/windows/global.h b/src/calibre/devices/mtp/windows/global.h index 9660b21c40..1c2fb779b6 100644 --- a/src/calibre/devices/mtp/windows/global.h +++ b/src/calibre/devices/mtp/windows/global.h @@ -8,11 +8,11 @@ #pragma once #define UNICODE #define PY_SSIZE_T_CLEAN -#include +#include #include #include -#include +#include #include #include #include "../../../utils/windows/common.h" diff --git a/src/calibre/utils/cpp_binding.h b/src/calibre/utils/cpp_binding.h index 8a3ee47c65..1fd9e52932 100644 --- a/src/calibre/utils/cpp_binding.h +++ b/src/calibre/utils/cpp_binding.h @@ -47,13 +47,14 @@ class generic_raii { }; -static inline void wchar_raii_free(wchar_t *x) { PyMem_Free(x); } +template +static inline void pymem_free(T *x) { PyMem_Free(x); } #if (defined(__GNUC__) && !defined(__clang__)) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsubobject-linkage" #endif -class wchar_raii : public generic_raii(NULL)> { +class wchar_raii : public generic_raii { #if (defined(__GNUC__) && !defined(__clang__)) #pragma GCC diagnostic pop #endif diff --git a/src/calibre/utils/windows/common.h b/src/calibre/utils/windows/common.h index 2d60c8b366..1ae3b57e99 100644 --- a/src/calibre/utils/windows/common.h +++ b/src/calibre/utils/windows/common.h @@ -58,7 +58,8 @@ class scoped_com_initializer { // {{{ #define INITIALIZE_COM_IN_FUNCTION scoped_com_initializer com; if (!com) return com.set_python_error(); -static inline void co_task_mem_free(wchar_t *x) { CoTaskMemFree(x); } +template +static inline void co_task_mem_free(T *x) { CoTaskMemFree(x); } typedef generic_raii com_wchar_raii; static inline void mapping_raii_free(void *x) { UnmapViewOfFile(x); }