diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc index a167b47c475..7c2b861f03e 100644 --- a/storage/connect/ha_connect.cc +++ b/storage/connect/ha_connect.cc @@ -1317,7 +1317,7 @@ bool ha_connect::OpenTable(PGLOBAL g, bool del) istable= true; // strmake(tname, table_name, sizeof(tname)-1); - if (xmod == MODE_ANY && *tdbp->GetName() != '#') { + if (xmod == MODE_ANY && stop && *tdbp->GetName() != '#') { // We are in a create index query if (!((PTDBASE)tdbp)->GetDef()->Indexable()) { sprintf(g->Message, "Table %s cannot be indexed", tdbp->GetName()); diff --git a/storage/connect/libdoc.cpp b/storage/connect/libdoc.cpp index e01bc39604b..cef4fa7b01e 100644 --- a/storage/connect/libdoc.cpp +++ b/storage/connect/libdoc.cpp @@ -373,10 +373,11 @@ bool LIBXMLDOC::CheckDocument(FILE *of, xmlNodePtr np) /******************************************************************/ int LIBXMLDOC::Decode(xmlChar *cnt, char *buf, int n) { - uint dummy_errors; - uint32 len= copy_and_convert(buf, n, &my_charset_latin1, - cnt, strlen(cnt), &my_charset_utf8_bin, - &dummy_errors); + const char *txt = (const char *)cnt; + uint dummy_errors; + uint32 len= copy_and_convert(buf, n, &my_charset_latin1, txt, + strlen(txt), &my_charset_utf8_bin, + &dummy_errors); buf[len]= '\0'; return 0; } // end of Decode @@ -398,9 +399,9 @@ xmlChar *LIBXMLDOC::Encode(PGLOBAL g, char *txt) buf = Buf; } // endif g uint dummy_errors; - uint32 len= copy_and_convert(buf, o, ocs, + uint32 len= copy_and_convert(buf, o, ocs, txt, i, ics, - &dummy_errors); + &dummy_errors); buf[len]= '\0'; return BAD_CAST buf; } // end of Encode diff --git a/storage/connect/tabxml.cpp b/storage/connect/tabxml.cpp index a480e6aafc5..d4cb0168ae7 100644 --- a/storage/connect/tabxml.cpp +++ b/storage/connect/tabxml.cpp @@ -904,22 +904,25 @@ int TDBXML::DeleteDB(PGLOBAL g, int irc) /***********************************************************************/ void TDBXML::CloseDB(PGLOBAL g) { - if (Changed) { - char filename[_MAX_PATH]; -// PDBUSER dup = (PDBUSER)g->Activityp->Aptr; + if (Docp) { + if (Changed) { + char filename[_MAX_PATH]; +// PDBUSER dup = (PDBUSER)g->Activityp->Aptr; - // We used the file name relative to recorded datapath - PlugSetPath(filename, Xfile, GetPath()); + // We used the file name relative to recorded datapath + PlugSetPath(filename, Xfile, GetPath()); - if (Mode == MODE_INSERT) - TabNode->AddText(g, "\n"); + if (Mode == MODE_INSERT) + TabNode->AddText(g, "\n"); - // Save the modified document - int rc = Docp->DumpDoc(g, filename); - } // endif Changed + // Save the modified document + int rc = Docp->DumpDoc(g, filename); + } // endif Changed + + // Free the document and terminate XML processing + Docp->CloseDoc(g, To_Xb); + } // endif docp - // Free the document and terminate XML processing - Docp->CloseDoc(g, To_Xb); } // end of CloseDB // ------------------------ XMLCOL functions ----------------------------