Commit: 0b45a2fae7054204012d81539ef62e6cf44297e1
Author: Sergey Sharybin
Date:   Fri Dec 19 17:50:26 2014 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rB0b45a2fae7054204012d81539ef62e6cf44297e1

Depsgraph: Fix wrong memory access in debug dump

It's not possible to have stuff like

  const char *foo = bar().c_str()

in cases when bar() returns dynamically allocated string.

===================================================================

M       source/blender/depsgraph/intern/depsgraph_debug.cpp

===================================================================

diff --git a/source/blender/depsgraph/intern/depsgraph_debug.cpp 
b/source/blender/depsgraph/intern/depsgraph_debug.cpp
index b7e1c52..c6ae0f9 100644
--- a/source/blender/depsgraph/intern/depsgraph_debug.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_debug.cpp
@@ -362,19 +362,19 @@ static void deg_debug_graphviz_node_style(const 
DebugContext &ctx, const DepsNod
 static void deg_debug_graphviz_node_single(const DebugContext &ctx, const 
DepsNode *node)
 {
        const char *shape = "box";
-       const char *name = node->identifier().c_str();
+       const string name = node->identifier();
        float priority = -1.0f;
        if (ctx.show_eval_priority && node->tclass == DEPSNODE_CLASS_OPERATION)
                priority = ((OperationDepsNode *)node)->eval_priority;
        
-       deg_debug_printf(ctx, "// %s\n", name);
+       deg_debug_printf(ctx, "// %s\n", name.c_str());
        deg_debug_printf(ctx, "\"node_%p\"", node);
        deg_debug_printf(ctx, "[");
 //     deg_debug_printf(ctx, "label=<<B>%s</B>>", name);
        if (priority >= 0.0f)
-               deg_debug_printf(ctx, "label=<%s<BR/>(<I>%.2f</I>)>", name, 
priority);
+               deg_debug_printf(ctx, "label=<%s<BR/>(<I>%.2f</I>)>", 
name.c_str(), priority);
        else
-               deg_debug_printf(ctx, "label=<%s>", name);
+               deg_debug_printf(ctx, "label=<%s>", name.c_str());
        deg_debug_printf(ctx, ",fontname=\"%s\"", deg_debug_graphviz_fontname);
        deg_debug_printf(ctx, ",fontsize=%f", 
deg_debug_graphviz_node_label_size);
        deg_debug_printf(ctx, ",shape=%s", shape);
@@ -389,12 +389,12 @@ static void deg_debug_graphviz_node_single(const 
DebugContext &ctx, const DepsNo
 
 static void deg_debug_graphviz_node_cluster_begin(const DebugContext &ctx, 
const DepsNode *node)
 {
-       const char *name = node->identifier().c_str();
+       const string name = node->identifier().c_str();
        
-       deg_debug_printf(ctx, "// %s\n", name);
+       deg_debug_printf(ctx, "// %s\n", name.c_str());
        deg_debug_printf(ctx, "subgraph \"cluster_%p\" {" NL, node);
 //     deg_debug_printf(ctx, "label=<<B>%s</B>>;" NL, name);
-       deg_debug_printf(ctx, "label=<%s>;" NL, name);
+       deg_debug_printf(ctx, "label=<%s>;" NL, name.c_str());
        deg_debug_printf(ctx, "fontname=\"%s\";" NL, 
deg_debug_graphviz_fontname);
        deg_debug_printf(ctx, "fontsize=%f;" NL, 
deg_debug_graphviz_node_label_size);
        deg_debug_printf(ctx, "style="); deg_debug_graphviz_node_style(ctx, 
node); deg_debug_printf(ctx, ";" NL);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to