* fix crash, if renaming tag w/o shaders assigned

This commit is contained in:
Garux 2018-01-16 14:40:16 +03:00
parent 98937beb75
commit 78db33ff4a
2 changed files with 14 additions and 13 deletions

View File

@ -383,7 +383,7 @@ int XmlTagBuilder::RenameShaderTag( const char* oldtag, CopiedString newtag ){
return 0; return 0;
} }
xmlNodeSetPtr nodePtr = result->nodesetval; xmlNodeSetPtr nodePtr = result->nodesetval;
if ( !xmlXPathNodeSetIsEmpty( nodePtr ) ) {
for ( int i = 0; i < nodePtr->nodeNr; i++ ) for ( int i = 0; i < nodePtr->nodeNr; i++ )
{ {
xmlNodePtr ptrContent = nodePtr->nodeTab[i]; xmlNodePtr ptrContent = nodePtr->nodeTab[i];
@ -394,6 +394,7 @@ int XmlTagBuilder::RenameShaderTag( const char* oldtag, CopiedString newtag ){
num++; num++;
} }
} }
}
SaveXmlDoc(); SaveXmlDoc();
xmlXPathFreeObject( result ); // CHANGED xmlXPathFreeObject( result ); // CHANGED
@ -500,7 +501,7 @@ void XmlTagBuilder::GetShaderTags( const char* shader, std::vector<CopiedString>
if ( !xmlXPathNodeSetIsEmpty( nodePtr ) ) { if ( !xmlXPathNodeSetIsEmpty( nodePtr ) ) {
for ( int i = 0; i < nodePtr->nodeNr; i++ ) for ( int i = 0; i < nodePtr->nodeNr; i++ )
{ {
tags.push_back( (CopiedString)(char*)xmlNodeGetContent( nodePtr->nodeTab[i] ) ); tags.push_back( CopiedString( (char*)xmlNodeGetContent( nodePtr->nodeTab[i] ) ) );
} }
} }
xmlXPathFreeObject( xpathPtr ); xmlXPathFreeObject( xpathPtr );
@ -556,7 +557,7 @@ void XmlTagBuilder::GetAllTags( std::set<CopiedString>& tags ){
if ( !xmlXPathNodeSetIsEmpty( nodePtr ) ) { if ( !xmlXPathNodeSetIsEmpty( nodePtr ) ) {
for ( int i = 0; i < nodePtr->nodeNr; i++ ) for ( int i = 0; i < nodePtr->nodeNr; i++ )
{ {
tags.insert( (CopiedString)(char*)xmlNodeGetContent( nodePtr->nodeTab[i] ) ); tags.insert( CopiedString( (char*)xmlNodeGetContent( nodePtr->nodeTab[i] ) ) );
} }
} }
@ -587,7 +588,7 @@ void XmlTagBuilder::TagSearch( const char* expression, std::set<CopiedString>& p
{ {
ptr = nodePtr->nodeTab[i]; ptr = nodePtr->nodeTab[i];
xmlattrib = xmlGetProp( ptr, (const xmlChar*)"path" ); xmlattrib = xmlGetProp( ptr, (const xmlChar*)"path" );
paths.insert( (CopiedString)(char*)xmlattrib ); paths.insert( CopiedString( (char*)xmlattrib ) );
} }
} }
xmlXPathFreeObject( xpathPtr ); xmlXPathFreeObject( xpathPtr );

View File

@ -2553,7 +2553,7 @@ void TextureBrowser_renameTag(){
TagBuilder.RenameShaderTag( oldTag, newTag.c_str() ); TagBuilder.RenameShaderTag( oldTag, newTag.c_str() );
g_TextureBrowser.m_all_tags.erase( (CopiedString)oldTag ); g_TextureBrowser.m_all_tags.erase( CopiedString( oldTag ) );
g_TextureBrowser.m_all_tags.insert( newTag ); g_TextureBrowser.m_all_tags.insert( newTag );
BuildStoreAssignedTags( g_TextureBrowser.m_assigned_store, g_TextureBrowser.shader.c_str(), &g_TextureBrowser ); BuildStoreAssignedTags( g_TextureBrowser.m_assigned_store, g_TextureBrowser.shader.c_str(), &g_TextureBrowser );
@ -2595,7 +2595,7 @@ void TextureBrowser_deleteTag(){
} }
TagBuilder.DeleteTag( tagSelected ); TagBuilder.DeleteTag( tagSelected );
g_TextureBrowser.m_all_tags.erase( (CopiedString)tagSelected ); g_TextureBrowser.m_all_tags.erase( CopiedString( tagSelected ) );
BuildStoreAssignedTags( g_TextureBrowser.m_assigned_store, g_TextureBrowser.shader.c_str(), &g_TextureBrowser ); BuildStoreAssignedTags( g_TextureBrowser.m_assigned_store, g_TextureBrowser.shader.c_str(), &g_TextureBrowser );
BuildStoreAvailableTags( g_TextureBrowser.m_available_store, g_TextureBrowser.m_assigned_store, g_TextureBrowser.m_all_tags, &g_TextureBrowser ); BuildStoreAvailableTags( g_TextureBrowser.m_available_store, g_TextureBrowser.m_assigned_store, g_TextureBrowser.m_all_tags, &g_TextureBrowser );