C++ conformance fixes (MSVC /permissive-)
authorPhil Christensen <>
Mon, 6 Feb 2017 09:44:25 +0000 (10:44 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Mon, 6 Feb 2017 09:44:56 +0000 (10:44 +0100)
We (the Microsoft C++ team) use the Blender project as part of our "Real world code" tests.
I noticed a place in WIN32 specific code (dvpapi.cpp:85) where a string literal is losing
its const-ness when being passed to BLI_dynlib_open().  This is not permitted when using the
/permissive- conformance compiler switch (see our blog
https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/)

My suggested fix is to add const and propagate it where needed.  Another possible fix would be
to explicitly cast away the const.

Reviewers: mont29, sergey, LazyDodo

Subscribers: Blendify, sergey, mont29, LazyDodo

Tags: #platform:_windows

Differential Revision: https://developer.blender.org/D2495

intern/utfconv/utfconv.h
source/blender/blenlib/BLI_dynlib.h
source/blender/blenlib/intern/dynlib.c

index f00f4aeef2759400acfad2625f5a97f1fe066048..d05ed61c8d8951e36110672f0f478198a27c2135 100644 (file)
@@ -93,7 +93,7 @@ wchar_t *alloc_utf16_from_8(const char *in8, size_t add);
 
 /* Easy allocation and conversion of new utf-16 string. New string has _16 suffix. Must be deallocated with UTF16_UN_ENCODE in right order*/
 #define UTF16_ENCODE(in8str) if (1) { \
-               wchar_t *in8str ## _16 = alloc_utf16_from_8((char *)in8str, 0)
+               wchar_t *in8str ## _16 = alloc_utf16_from_8((const char *)in8str, 0)
 
 #define UTF16_UN_ENCODE(in8str) \
        free(in8str ## _16); } (void)0
index 7d5eb8880213e425387c0841bb6e943b66ab5535..310db9ea051473d0b84f3af8cc76f501096513d8 100644 (file)
@@ -34,7 +34,7 @@
 
 typedef struct DynamicLibrary DynamicLibrary;
 
-DynamicLibrary *BLI_dynlib_open(char *name);
+DynamicLibrary *BLI_dynlib_open(const char *name);
 void *BLI_dynlib_find_symbol(DynamicLibrary *lib, const char *symname);
 char *BLI_dynlib_get_error_as_string(DynamicLibrary *lib);
 void BLI_dynlib_close(DynamicLibrary *lib);
index b47c2ee60a66e04b1ea3612021276db0c691f9f2..51b91fb360fa74eb6345ebfd7f867ed22af019be 100644 (file)
@@ -50,7 +50,7 @@ struct DynamicLibrary {
 #include "utf_winfunc.h"
 #include "utfconv.h"
 
-DynamicLibrary *BLI_dynlib_open(char *name)
+DynamicLibrary *BLI_dynlib_open(const char *name)
 {
        DynamicLibrary *lib;
        void *handle;
@@ -106,7 +106,7 @@ void BLI_dynlib_close(DynamicLibrary *lib)
 
 #include <dlfcn.h>
 
-DynamicLibrary *BLI_dynlib_open(char *name)
+DynamicLibrary *BLI_dynlib_open(const char *name)
 {
        DynamicLibrary *lib;
        void *handle = dlopen(name, RTLD_LAZY);