On 03/22/2016 03:25 PM, Yves Frederix wrote:
> Do I understand it correctly that you suggest to pass a locally-owned
> copy of the string into the call to VariableAccessed? If so, then I am
> not sure how this would solve the problem. The problem is not that def
> is changed by VariableAccessed, the problem is that the original char*
> after calling this function sometimes no longer points to a valid
> location in memory. Or am I missing something here?

Thanks, I missed the problem for the `return def` line.  However, I
think both places are a problem.  I think it is simplest to just
re-lookup the variable value at the end of the variable watch if()
block.

> 3. Define a move constructor in the cmDefinitions class. Probably that
> is not an option as IIRC CMake uses C++98. I did, however, check this
> solution locally, compiling CMake using VS2012 and can verify that it
> fixes the problem.

CMake actually does build as C++11 or C++14 by default with some
compilers, but we must retain the ability to build and work as C++98.
One could conditionally define a move constructor simply to improve
efficiency when we do build as C++11.  The above fix would still be
needed though.

Thanks,
-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to