summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2021-04-26 17:32:20 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2021-04-26 17:32:20 (GMT)
commit55e86052e0522ac7b51743449055572cc8bc7823 (patch)
tree7f69870aea5296850947967e567706538082dae5
parent51316839084c3292a8fb216e73ed146683028d4a (diff)
downloadDoxygen-55e86052e0522ac7b51743449055572cc8bc7823.zip
Doxygen-55e86052e0522ac7b51743449055572cc8bc7823.tar.gz
Doxygen-55e86052e0522ac7b51743449055572cc8bc7823.tar.bz2
Fix issues caused by QCString::rawData and QCString::operator[]
- methods were marked const but still returned a non-const reference, cause wrongly optimized code for some platforms/compilers
-rw-r--r--libmd5/md5.c20
-rw-r--r--libmd5/md5.h2
-rw-r--r--src/code.l9
-rw-r--r--src/configimpl.l2
-rw-r--r--src/definition.cpp6
-rw-r--r--src/dirdef.cpp4
-rw-r--r--src/docparser.cpp18
-rw-r--r--src/dotgraph.cpp8
-rw-r--r--src/dotnode.cpp37
-rw-r--r--src/fortrancode.l9
-rw-r--r--src/htmlgen.cpp2
-rw-r--r--src/htmlhelp.cpp2
-rw-r--r--src/memberdef.cpp6
-rw-r--r--src/membergroup.cpp6
-rw-r--r--src/outputgen.cpp4
-rw-r--r--src/portable.cpp2
-rw-r--r--src/portable.h2
-rw-r--r--src/portable_c.c6
-rw-r--r--src/pycode.l7
-rw-r--r--src/qcstring.h20
-rw-r--r--src/rtfgen.cpp2
-rwxr-xr-xsrc/template.cpp3
-rw-r--r--src/util.cpp10
-rw-r--r--src/vhdlcode.l7
-rw-r--r--src/xmlgen.cpp4
25 files changed, 94 insertions, 104 deletions
diff --git a/libmd5/md5.c b/libmd5/md5.c
index d0627ff..1fdcb3a 100644
--- a/libmd5/md5.c
+++ b/libmd5/md5.c
@@ -31,13 +31,13 @@ MD5Transform(UWORD32 buf[4], UWORD32 const in[16]);
int g_bigEndian = 0;
int g_endianessDetected = 0;
-static void
+static void
detectEndianess()
{
int nl = 0x12345678;
short ns = 0x1234;
- unsigned char *p = (unsigned char *)(&nl);
+ unsigned char *p = (unsigned char *)(&nl);
unsigned char *sp = (unsigned char *)(&ns);
if (g_endianessDetected) return;
@@ -132,7 +132,7 @@ MD5Update(struct MD5Context *ctx, md5byte const *buf, unsigned len)
}
/*
- * Final wrapup - pad to 64-byte boundary with the bit pattern
+ * Final wrapup - pad to 64-byte boundary with the bit pattern
* 1 0* (64-bit count of bits processed, MSB-first)
*/
void
@@ -282,14 +282,13 @@ void MD5Buffer (const unsigned char *buf,unsigned int len,unsigned char sig[16])
#define HEX_STRING "0123456789abcdef" /* to convert to hex */
-void MD5SigToString(unsigned char signature[16],char *str,int len)
+void MD5SigToString(unsigned char signature[16],char str[33])
{
unsigned char *sig_p;
- char *str_p, *max_p;
+ char *str_p;
unsigned int high, low;
str_p = str;
- max_p = str + len;
for (sig_p = (unsigned char *)signature;
sig_p < (unsigned char *)signature + 16;
@@ -298,16 +297,11 @@ void MD5SigToString(unsigned char signature[16],char *str,int len)
high = *sig_p / 16;
low = *sig_p % 16;
/* account for 2 chars */
- if (str_p + 1 >= max_p) {
- break;
- }
*str_p++ = HEX_STRING[high];
*str_p++ = HEX_STRING[low];
}
- /* account for 2 chars */
- if (str_p < max_p) {
- *str_p++ = '\0';
- }
+ /* account for 1 terminator */
+ *str_p++ = '\0';
}
diff --git a/libmd5/md5.h b/libmd5/md5.h
index 03f8ff6..5d0c0b0 100644
--- a/libmd5/md5.h
+++ b/libmd5/md5.h
@@ -48,7 +48,7 @@ void MD5Init(struct MD5Context *context);
void MD5Update(struct MD5Context *context, md5byte const *buf, unsigned len);
void MD5Final(unsigned char digest[16], struct MD5Context *context);
void MD5Buffer (const unsigned char *buf,unsigned int len,unsigned char sig[16]);
-void MD5SigToString(unsigned char sig[16],char *str,int len);
+void MD5SigToString(unsigned char sig[16],char str[33]);
#ifdef __cplusplus
}
diff --git a/src/code.l b/src/code.l
index c8a1dba..ed94853 100644
--- a/src/code.l
+++ b/src/code.l
@@ -2480,18 +2480,17 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,CodeOutputInterface &ol,
tooltip = d->briefDescriptionAsTooltip();
}
bool done=FALSE;
- char *p=text.rawData();
+ const char *p=text.data();
while (!done)
{
- char *sp=p;
+ const char *sp=p;
char c;
while ((c=*p++) && c!='\n') { }
if (c=='\n')
{
yyextra->yyLineNr++;
- *(p-1)='\0';
- DBG_CTX((stderr,"writeCodeLink(%s,%s,%s,%s)\n",qPrint(ref),qPrint(file),qPrint(anchor),sp));
- ol.writeCodeLink(ref,file,anchor,QCString(sp),tooltip);
+ DBG_CTX((stderr,"writeCodeLink(%s,%s,%s,%s)\n",qPrint(ref),qPrint(file),qPrint(anchor),qPrint(QCString(sp,p-sp-1))));
+ ol.writeCodeLink(ref,file,anchor,QCString(sp,p-sp-1),tooltip);
nextCodeLine(yyscanner);
}
else
diff --git a/src/configimpl.l b/src/configimpl.l
index 1285fba..2417336 100644
--- a/src/configimpl.l
+++ b/src/configimpl.l
@@ -562,7 +562,7 @@ static QCString configStringRecode(
}
size_t iLeft=(size_t)inputSize;
size_t oLeft=(size_t)outputSize;
- char *inputPtr = str.rawData();
+ const char *inputPtr = str.data();
char *outputPtr = output.rawData();
if (!portable_iconv(cd, &inputPtr, &iLeft, &outputPtr, &oLeft))
{
diff --git a/src/definition.cpp b/src/definition.cpp
index e9f479c..a03a676 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -428,17 +428,17 @@ void DefinitionImpl::writeDocAnchorsToTagFile(TextStream &tagFile) const
bool DefinitionImpl::_docsAlreadyAdded(const QCString &doc,QCString &sigList)
{
uchar md5_sig[16];
- QCString sigStr(33);
+ char sigStr[33];
// to avoid mismatches due to differences in indenting, we first remove
// double whitespaces...
QCString docStr = doc.simplifyWhiteSpace();
MD5Buffer((const unsigned char *)docStr.data(),docStr.length(),md5_sig);
- MD5SigToString(md5_sig,sigStr.rawData(),33);
+ MD5SigToString(md5_sig,sigStr);
//printf("%s:_docsAlreadyAdded doc='%s' sig='%s' docSigs='%s'\n",
// qPrint(name()),qPrint(doc),qPrint(sigStr),qPrint(sigList));
if (sigList.find(sigStr)==-1) // new docs, add signature to prevent re-adding it
{
- sigList+=":"+sigStr;
+ sigList+=QCString(":")+sigStr;
return FALSE;
}
else
diff --git a/src/dirdef.cpp b/src/dirdef.cpp
index 72681d9..1814b51 100644
--- a/src/dirdef.cpp
+++ b/src/dirdef.cpp
@@ -178,9 +178,9 @@ static QCString encodeDirName(const QCString &anchor)
{
// convert to md5 hash
uchar md5_sig[16];
- QCString sigStr(33);
+ char sigStr[33];
MD5Buffer((const unsigned char *)anchor.data(),anchor.length(),md5_sig);
- MD5SigToString(md5_sig,sigStr.rawData(),33);
+ MD5SigToString(md5_sig,sigStr);
return sigStr;
// old algorithm
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 23b3729..6e2a6d8 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -275,21 +275,21 @@ static void docParserPopContext(bool keepParamInfo=FALSE)
// replaces &gt; with < and &gt; with > within string s
static void unescapeCRef(QCString &s)
{
- QCString tmp(s);
- char *p = tmp.rawData();
+ QCString result;
+ const char *p = s.data();
if (p)
{
char c;
- while ((c=*p))
+ while ((c=*p++))
{
if (c=='{') c='<'; else if (c=='}') c='>';
- *p++=c;
+ result+=c;
}
}
- tmp=substitute(tmp,"&lt;","<");
- tmp=substitute(tmp,"&gt;",">");
- s = tmp;
+ result=substitute(result,"&lt;","<");
+ result=substitute(result,"&gt;",">");
+ s = result;
}
//---------------------------------------------------------------------------
@@ -7166,9 +7166,7 @@ static QCString extractCopyDocId(const char *data, uint &j, uint len)
j+=9;
}
e=j;
- QCString id(e-s+1);
- if (e>s) memcpy(id.rawData(),data+s,e-s);
- id.at(e-s)='\0';
+ QCString id(data+s,e-s);
//printf("extractCopyDocId='%s' input='%s'\n",qPrint(id),&data[s]);
return id;
}
diff --git a/src/dotgraph.cpp b/src/dotgraph.cpp
index 6ab34c8..37a1587 100644
--- a/src/dotgraph.cpp
+++ b/src/dotgraph.cpp
@@ -45,8 +45,8 @@ static bool checkMd5Signature(const QCString &baseName,
if (f.is_open())
{
// read checksum
- QCString md5stored(33);
- f.read(md5stored.rawData(),32);
+ char md5stored[33];
+ f.read(md5stored,32);
md5stored[32]='\0';
// compare checksum
if (!f.fail() && md5==md5stored)
@@ -142,12 +142,12 @@ bool DotGraph::prepareDotFile()
term("Output dir %s does not exist!\n", m_dir.path().c_str());
}
- QCString sigStr(33);
+ char sigStr[33];
uchar md5_sig[16];
// calculate md5
MD5Buffer((const unsigned char*)m_theGraph.data(), m_theGraph.length(), md5_sig);
// convert result to a string
- MD5SigToString(md5_sig, sigStr.rawData(), 33);
+ MD5SigToString(md5_sig, sigStr);
// already queued files are processed again in case the output format has changed
diff --git a/src/dotnode.cpp b/src/dotnode.cpp
index 8dcfaaf..bfc7c08 100644
--- a/src/dotnode.cpp
+++ b/src/dotnode.cpp
@@ -609,15 +609,13 @@ void DotNode::writeXML(TextStream &t,bool isClassGraph) const
if (!m_url.isEmpty())
{
QCString url(m_url);
- const char *refPtr = url.data();
- char *urlPtr = strchr(url.rawData(),'$');
- if (urlPtr)
+ int dollarPos = url.find('$');
+ if (dollarPos!=-1)
{
- *urlPtr++='\0';
- t << " <link refid=\"" << convertToXML(urlPtr) << "\"";
- if (*refPtr!='\0')
+ t << " <link refid=\"" << convertToXML(url.mid(dollarPos+1)) << "\"";
+ if (dollarPos>0)
{
- t << " external=\"" << convertToXML(refPtr) << "\"";
+ t << " external=\"" << convertToXML(url.left(dollarPos)) << "\"";
}
t << "/>\n";
}
@@ -673,15 +671,13 @@ void DotNode::writeDocbook(TextStream &t,bool isClassGraph) const
if (!m_url.isEmpty())
{
QCString url(m_url);
- const char *refPtr = url.data();
- char *urlPtr = strchr(url.rawData(),'$');
- if (urlPtr)
+ int dollarPos = url.find('$');
+ if (dollarPos!=-1)
{
- *urlPtr++='\0';
- t << " <link refid=\"" << convertToXML(urlPtr) << "\"";
- if (*refPtr!='\0')
+ t << " <link refid=\"" << convertToXML(url.mid(dollarPos+1)) << "\"";
+ if (dollarPos>0)
{
- t << " external=\"" << convertToXML(refPtr) << "\"";
+ t << " external=\"" << convertToXML(url.left(dollarPos)) << "\"";
}
t << "/>\n";
}
@@ -742,18 +738,15 @@ void DotNode::writeDEF(TextStream &t) const
if (!m_url.isEmpty())
{
QCString url(m_url);
- const char *refPtr = url.data();
- char *urlPtr = strchr(url.rawData(),'$');
- if (urlPtr)
+ int dollarPos = url.find('$');
+ if (dollarPos!=-1)
{
- *urlPtr++='\0';
t << nodePrefix << "link = {\n" << " "
- << nodePrefix << "link-id = '" << urlPtr << "';\n";
-
- if (*refPtr!='\0')
+ << nodePrefix << "link-id = '" << url.mid(dollarPos+1) << "';\n";
+ if (dollarPos>0)
{
t << " " << nodePrefix << "link-external = '"
- << refPtr << "';\n";
+ << url.left(dollarPos) << "';\n";
}
t << " };\n";
}
diff --git a/src/fortrancode.l b/src/fortrancode.l
index 67890e4..c7c4d89 100644
--- a/src/fortrancode.l
+++ b/src/fortrancode.l
@@ -1024,24 +1024,23 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,CodeOutputInterface &ol,
tooltip = d->briefDescriptionAsTooltip();
}
bool done=FALSE;
- char *p=text.rawData();
+ const char *p=text.data();
while (!done)
{
- char *sp=p;
+ const char *sp=p;
char c;
while ((c=*p++) && c!='\n') { }
if (c=='\n')
{
yyextra->yyLineNr++;
- *(p-1)='\0';
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
- ol.writeCodeLink(ref,file,anchor,QCString(sp),tooltip);
+ ol.writeCodeLink(ref,file,anchor,QCString(sp,p-sp-1),tooltip);
nextCodeLine(yyscanner);
}
else
{
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
- ol.writeCodeLink(ref,file,anchor,QCString(sp),tooltip);
+ ol.writeCodeLink(ref,file,anchor,sp,tooltip);
done=TRUE;
}
}
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 7cd893f..bece962 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -1042,7 +1042,7 @@ static std::mutex g_indexLock;
void HtmlGenerator::startFile(const QCString &name,const QCString &,
const QCString &title,int id)
{
- //printf("HtmlGenerator::startFile(%s)\n",name);
+ //printf("HtmlGenerator::startFile(%s)\n",qPrint(name));
m_relPath = relativePathToRoot(name);
QCString fileName = addHtmlExtensionIfMissing(name);
m_lastTitle=title;
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index 05553e1..9887616 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -73,7 +73,7 @@ class HtmlHelpRecoder
QCString output(oSize);
size_t iLeft = iSize;
size_t oLeft = oSize;
- char *iPtr = s.rawData();
+ const char *iPtr = s.data();
char *oPtr = output.rawData();
if (!portable_iconv(m_fromUtf8,&iPtr,&iLeft,&oPtr,&oLeft))
{
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 243f3fb..dc5d095 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -4081,10 +4081,10 @@ void MemberDefImpl::setAnchor()
// convert to md5 hash
uchar md5_sig[16];
- QCString sigStr(33);
+ char sigStr[33];
MD5Buffer((const unsigned char *)memAnchor.data(),memAnchor.length(),md5_sig);
- MD5SigToString(md5_sig,sigStr.rawData(),33);
- m_impl->anc = "a"+sigStr;
+ MD5SigToString(md5_sig,sigStr);
+ m_impl->anc = QCString("a")+sigStr;
}
void MemberDefImpl::setGroupDef(const GroupDef *gd,Grouping::GroupPri_t pri,
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index 9f7f6ef..641a317 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -262,12 +262,12 @@ void MemberGroup::setInGroup(bool b)
QCString MemberGroup::anchor() const
{
uchar md5_sig[16];
- QCString sigStr(33);
+ char sigStr[33];
QCString locHeader = grpHeader;
if (locHeader.isEmpty()) locHeader="[NOHEADER]";
MD5Buffer((const unsigned char *)locHeader.data(),locHeader.length(),md5_sig);
- MD5SigToString(md5_sig,sigStr.rawData(),33);
- return "amgrp"+sigStr;
+ MD5SigToString(md5_sig,sigStr);
+ return QCString("amgrp")+sigStr;
}
void MemberGroup::addListReferences(Definition *def)
diff --git a/src/outputgen.cpp b/src/outputgen.cpp
index 82c470c..a64bf08 100644
--- a/src/outputgen.cpp
+++ b/src/outputgen.cpp
@@ -59,12 +59,12 @@ OutputGenerator &OutputGenerator::operator=(const OutputGenerator &og)
void OutputGenerator::startPlainFile(const QCString &name)
{
- //printf("startPlainFile(%s)\n",name);
+ //printf("startPlainFile(%s)\n",qPrint(name));
m_fileName=m_dir+"/"+name;
m_file.open(m_fileName.str(),std::ofstream::out | std::ofstream::binary);
if (!m_file.is_open())
{
- term("Could not open file %s for writing\n",m_fileName.data());
+ term("Could not open file %s for writing\n",qPrint(m_fileName));
}
m_t.setStream(&m_file);
}
diff --git a/src/portable.cpp b/src/portable.cpp
index 7448e55..7bcc830 100644
--- a/src/portable.cpp
+++ b/src/portable.cpp
@@ -607,7 +607,7 @@ size_t Portable::recodeUtf8StringToW(const QCString &inputStr,uint16_t **outBuf)
size_t inRemains = len;
size_t outRemains = len*sizeof(uint16_t)+2; // chars + \0
const char *p = inputStr.data();
- portable_iconv(handle,(char**)&p,&inRemains,(char**)&buf,&outRemains);
+ portable_iconv(handle,&p,&inRemains,(char**)&buf,&outRemains);
*buf=0;
portable_iconv_close(handle);
return len;
diff --git a/src/portable.h b/src/portable.h
index 205f024..d4434b2 100644
--- a/src/portable.h
+++ b/src/portable.h
@@ -53,7 +53,7 @@ namespace Portable
extern "C" {
void * portable_iconv_open(const char *tocode, const char *fromcode);
- size_t portable_iconv (void *cd, char** inbuf, size_t *inbytesleft,
+ size_t portable_iconv (void *cd, const char** inbuf, size_t *inbytesleft,
char* * outbuf, size_t *outbytesleft);
int portable_iconv_close (void *cd);
}
diff --git a/src/portable_c.c b/src/portable_c.c
index 3a79741..fe81844 100644
--- a/src/portable_c.c
+++ b/src/portable_c.c
@@ -13,7 +13,7 @@
// These functions are implemented in a C file, because there are different
// versions of the iconv() prototype, some with a const pointer and some
// without. In C this is just a warning, but in C++ breaks the compilation.
-// Looking at the LIBICONV_VERSION is not enough, since for MACOSX the
+// Looking at the LIBICONV_VERSION is not enough, since for MACOSX the
// const and non-const version exist with the same version of the file.
void * portable_iconv_open(const char* tocode, const char* fromcode)
@@ -21,10 +21,10 @@ void * portable_iconv_open(const char* tocode, const char* fromcode)
return iconv_open(tocode,fromcode);
}
-size_t portable_iconv (void *cd, char** inbuf, size_t *inbytesleft,
+size_t portable_iconv (void *cd, const char** inbuf, size_t *inbytesleft,
char** outbuf, size_t *outbytesleft)
{
- return iconv((iconv_t)cd,inbuf,inbytesleft,outbuf,outbytesleft);
+ return iconv((iconv_t)cd,(char**)inbuf,inbytesleft,outbuf,outbytesleft);
}
int portable_iconv_close (void *cd)
diff --git a/src/pycode.l b/src/pycode.l
index fa65e22..159af1f 100644
--- a/src/pycode.l
+++ b/src/pycode.l
@@ -1108,18 +1108,17 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,
tooltip = d->briefDescriptionAsTooltip();
}
bool done=FALSE;
- char *p=text.rawData();
+ const char *p=text.data();
while (!done)
{
- char *sp=p;
+ const char *sp=p;
char c;
while ((c=*p++) && c!='\n') { }
if (c=='\n')
{
yyextra->yyLineNr++;
- *(p-1)='\0';
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
- ol.writeCodeLink(ref,file,anchor,sp,tooltip);
+ ol.writeCodeLink(ref,file,anchor,QCString(sp,p-sp-1),tooltip);
nextCodeLine(yyscanner);
}
else
diff --git a/src/qcstring.h b/src/qcstring.h
index 1adb4bc..f7cccb7 100644
--- a/src/qcstring.h
+++ b/src/qcstring.h
@@ -154,7 +154,7 @@ class QCString
/** Returns a writable pointer to the data.
*/
- char *rawData() const { return m_rep.empty() ? 0 : const_cast<char*>(&m_rep[0]); }
+ char *rawData() { return &m_rep[0]; }
/** Resizes the string to hold \a newlen characters
* (this value should also count the 0-terminator).
@@ -436,15 +436,25 @@ class QCString
#endif
/** Returns a reference to the character at index \a i. */
- char &at( uint i) const
+ char &at( uint i)
{
- return const_cast<char&>(m_rep[i]);
+ return m_rep[i];
+ }
+
+ const char &at( uint i) const
+ {
+ return m_rep[i];
}
/** Indexing operator. Equivalent to at(). */
- char &operator[]( int i ) const
+ char &operator[]( int i )
+ {
+ return m_rep[i];
+ }
+
+ const char &operator[]( int i ) const
{
- return const_cast<char&>(m_rep[i]);
+ return m_rep[i];
}
private:
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 8e01a38..0fac0b4 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -2371,7 +2371,7 @@ static void encodeForOutput(TextStream &t,const QCString &s)
{
size_t iLeft=l;
size_t oLeft=enc.size();
- char *inputPtr = (char*)s.data();
+ const char *inputPtr = s.data();
char *outputPtr = &enc[0];
if (!portable_iconv(cd, &inputPtr, &iLeft, &outputPtr, &oLeft))
{
diff --git a/src/template.cpp b/src/template.cpp
index 9ae2c11..82b35f7 100755
--- a/src/template.cpp
+++ b/src/template.cpp
@@ -2356,7 +2356,7 @@ QCString TemplateContextImpl::recode(const QCString &s)
QCString output(oSize);
size_t iLeft = iSize;
size_t oLeft = oSize;
- char *iPtr = s.rawData();
+ const char *iPtr = s.data();
char *oPtr = output.rawData();
if (!portable_iconv(m_fromUtf8,&iPtr,&iLeft,&oPtr,&oLeft))
{
@@ -3557,6 +3557,7 @@ static void stripLeadingWhiteSpace(QCString &s)
else { *dst++=c; skipSpaces=FALSE; }
}
*dst='\0';
+ s.resize( (int)(dst - src) + 1 );
}
}
diff --git a/src/util.cpp b/src/util.cpp
index 550c7db..4174d42 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -615,7 +615,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
}
if (growBuf==0) return s; // should not happen, only we run out of memory
- char *src=s.rawData();
+ const char *src=s.data();
char *dst=growBuf;
uint i=0;
@@ -1400,7 +1400,7 @@ QCString transcodeCharacterStringToUTF8(const QCString &input)
{
size_t iLeft=inputSize;
size_t oLeft=outputSize;
- char *inputPtr = input.rawData();
+ const char *inputPtr = input.data();
char *outputPtr = output.rawData();
if (!portable_iconv(cd, &inputPtr, &iLeft, &outputPtr, &oLeft))
{
@@ -3760,9 +3760,9 @@ QCString convertNameToFile(const QCString &name,bool allowDots,bool allowUndersc
{
// third algorithm based on MD5 hash
uchar md5_sig[16];
- QCString sigStr(33);
+ char sigStr[33];
MD5Buffer((const unsigned char *)result.data(),resultLen,md5_sig);
- MD5SigToString(md5_sig,sigStr.rawData(),33);
+ MD5SigToString(md5_sig,sigStr);
result=result.left(128-32)+sigStr;
}
}
@@ -6170,7 +6170,7 @@ static int transcodeCharacterBuffer(const QCString &fileName,BufStr &srcBuf,int
BufStr tmpBuf(tmpBufSize);
size_t iLeft=size;
size_t oLeft=tmpBufSize;
- char *srcPtr = srcBuf.data();
+ const char *srcPtr = srcBuf.data();
char *dstPtr = tmpBuf.data();
uint newSize=0;
if (!portable_iconv(cd, &srcPtr, &iLeft, &dstPtr, &oLeft))
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index 1fc1858..8908976 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -1239,18 +1239,17 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,CodeOutputInterface &ol,
tooltip = d->briefDescriptionAsTooltip();
}
bool done=false;
- char *p=(char *)text.rawData();
+ const char *p=text.data();
while (!done)
{
- char *sp=p;
+ const char *sp=p;
char c;
while ((c=*p++) && c!='\n') {}
if (c=='\n')
{
yyextra->yyLineNr++;
- *(p-1)='\0';
// printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
- ol.writeCodeLink(ref,file,anchor,sp,tooltip);
+ ol.writeCodeLink(ref,file,anchor,QCString(sp,p-sp-1),tooltip);
nextCodeLine(yyscanner);
}
else
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 4e931cd..8489a3c 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1920,9 +1920,7 @@ void generateXML()
int len=static_cast<int>(endLine-startLine);
if (len>0)
{
- QCString s(len+1);
- qstrncpy(s.rawData(),startLine,len);
- s[len]='\0';
+ QCString s(startLine,len);
if (s.find("<!-- Automatically insert here the HTML entities -->")!=-1)
{
HtmlEntityMapper::instance()->writeXMLSchema(t);