<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><br><br><div><hr id="stopSpelling">From: scribus.user@gmail.com<br>Date: Fri, 11 Dec 2015 07:41:24 -0600<br>To: scribus-dev@lists.scribus.net<br>Subject: [scribus-dev] Can please someone teach me how to fix the current       compiler/build warnings<br><br><div dir="ltr"><div>Just ping me off list </div><div>/Kunda</div><div><br></div><div>GCC warnings<br></div><div>







<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1080-L1087" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1080-L1087</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1126-L1129" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1126-L1129</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1180-L1182" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1180-L1182</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1239-L1242" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1239-L1242</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1247-L1250" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1247-L1250</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1314-L1340" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1314-L1340</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2398-L2401" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2398-L2401</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2421-L2428" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2421-L2428</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2438-L2445" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2438-L2445</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2457-L2460" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2457-L2460</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2465-L2468" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2465-L2468</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2475-L2477" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2475-L2477</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2514-L2520" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2514-L2520</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2528-L2534" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2528-L2534</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2544-L2551" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2544-L2551</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2576-L2581" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2576-L2581</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2936-L2939" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2936-L2939</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2954-L2962" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2954-L2962</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3028-L3031" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3028-L3031</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3045-L3048" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3045-L3048</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3058-L3061" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3058-L3061</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3191-L3202" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3191-L3202</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3215-L3218" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3215-L3218</a><BR>
<a href="https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3225-L3246" target="_blank">https://travis-ci.org/scribusproject/scribus/jobs/95496650#L3225-L3246</a><BR><div><br></div></div></div>
<br>_______________________________________________
scribus-dev mailing list
scribus-dev@lists.scribus.net
http://lists.scribus.net/mailman/listinfo/scribus-dev</div><div><br></div><div>Kunda,</div><div><br></div><div><br></div><div>Here are suggestions for a few of them.</div><div><br></div><div><div><br></div><div>https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1080-L1087</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/text/storytext.cpp: In member function void StoryText::insertChars(int, QString, bool):</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/text/storytext.cpp:503:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]</div><div><br></div><div>if (d->cursorPosition >= (pos + i)) {</div><div><br></div><div><br></div><div><br></div><div>pos and i are int</div><div><br></div><div>ScText_Shared.cursorPosition is uint</div><div><br></div><div><br></div><div>You have several choices:</div><div><br></div><div>* make pos and i into uint (if you can confirm that they will never be set negative at the bounds of the loop)</div><div><br></div><div>* add a cast: if (d->cursorPosition >= (unit) (pos + i)) { (this will work, but it is better to avoid casts because an incorrect cast can hide a real problem)</div><div><br></div><div>* make cursorPosition into an int. This is the least desirable choice because it will probably have repercussions throughout the code, plus cursorPosition probably can't be negative.</div><div><br></div><div><br></div><div><br></div><div>https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1126-L1129</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/fonts/sfnt.cpp: In function bool sfnt::hasLongLocaFormat(const QByteArray&):</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/fonts/sfnt.cpp:584:40: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]</div><div><br></div><div>   qDebug() << "loca format:" << (void*)idxToLocFormat;</div><div><br></div><div><br></div><div><br></div><div>The line before is uint idxToLocFormat = word16(head, ttf_head_indexToLocFormat);</div><div><br></div><div>I think that the (void*) is bad. It idxToLocFormat is an unsigned integer, not a pointer. Probably removing the (void*) will stop the warning.</div><div><br></div><div><br></div><div><br></div><div>https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1180-L1182</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/fonts/scfontmetrics.cpp:46:13: warning: void readAdobeGlyphNames() declared static but never defined [-Wunused-function]</div><div><br></div><div>static void readAdobeGlyphNames();</div><div><br></div><div><br></div><div><br></div><div>Both uses of the function are in code that is commented out with #if 0.</div><div><br></div><div>The declaration should probably be removed or commented out.</div><div><br></div><div><br></div><div><br></div><div>https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1239-L1242</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp: In member function PageItem* Scribus134Format::pasteItem(ScribusDoc*, ScXmlStreamAttributes&, const QString&, PageItem::ItemKind, int):</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp:2513:9: warning: enumeration value NoteFrame�not handled in switch [-Wswitch]</div><div><br></div><div>  switch (pt)</div><div><br></div><div><br></div><div><br></div><div>This means that the "switch" is on an enumerated type, and not all of the enumeration values are handled in "case" clauses.</div><div><br></div><div>If a lot of values of not listed, it is probably intentional, and you can add a "default: break;" at the end to catch them.</div><div><br></div><div>If only one or two values are missing, it could be a bug where someone added a new value and didn't update all of the places that need to handle it,</div><div><br></div><div><br></div><div><br></div><div>The end of this particular "switch" has a half-dozen values that run "Q_ASSERT(false); break;".</div><div><br></div><div><br></div><div><br></div><div>You would need to read the code closely to see if NoteFrame</div><div><br></div><div>* should go into the group that calls "Q_ASSERT(false); break;"</div><div><br></div><div>* can be ignored with a "case PageItem::NoteFrame: break;"</div><div><br></div><div>* needs a new "case" statement with special code to handle it</div><div><br></div><div><br></div><div><br></div><div>https://travis-ci.org/scribusproject/scribus/jobs/95496650#L1239-L1242</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/plugins/gettext/pdbim/pdbim.cpp: In member function void PdbIm::loadFile(QString):</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/plugins/gettext/pdbim/pdbim.cpp:100:48: warning: ignoring return value of size_t fread(void*, size_t, size_t, FILE*), declared with attribute warn_unused_result [-Wunused-result]</div><div><br></div><div>  fread( &m_header, PDB_HEADER_SIZE, 1, m_pdfp );</div><div><br></div><div><br></div><div><br></div><div>fread() returns the number of records that it read.</div><div><br></div><div>If fread() is unsuccessful, the data (m_header in this case) will be uninitialized and code that uses it could fail or behave unpredictably.</div><div><br></div><div><br></div><div><br></div><div>The parameters to fread() are buffer pointer, record size, number of records, file</div><div><br></div><div>I think that the code should be</div><div><br></div><div>  if ( fread( &m_header, PDB_HEADER_SIZE, 1, m_pdfp ) != 1 ) {</div><div><br></div><div>    ScMessageBox::warning( say that you could not read the file, similar to the message about not being able to open the file )</div><div><br></div><div>    return;</div><div><br></div><div>  }</div><div><br></div><div><br></div><div><br></div><div>In general, you should always check system calls and library calls, except maybe printf to the console.</div><div><br></div><div><br></div><div><br></div><div>Some people would write "(void) fread( &m_header, PDB_HEADER_SIZE, 1, m_pdfp );" which suppresses the error message but does not solve the underlying problem of a failed read.</div><div><br></div><div>I always check reads and seeks in my personal code.</div><div><br></div><div><br></div><div>https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2421-L2428</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/plugins/import/revenge/rawpainter.cpp: In member function virtual void RawPainter::setStyle(const WPXPropertyList&, const WPXPropertyListVector&):</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/plugins/import/revenge/rawpainter.cpp:2335:10: warning: variable angle�set but not used [-Wunused-but-set-variable]</div><div><br></div><div>   double angle = 0;</div><div><br></div><div><br></div><div><br></div><div>The variable angle is set to propList["draw:angle"]->getDouble() and then never used.</div><div><br></div><div>The choices are</div><div><br></div><div>* remove the declaration and the assignment (maybe the code was left over from a cut-and-paste from another block of code)</div><div><br></div><div>* check that this is not something that might be needed in the future. Maybe "angle" should be in RawPainter in plugins/import/revenge/rawpainter.h</div><div><br></div><div>* check that this is not the wrong name. Maybe "angle" should be "gradientAngle".</div><div><br></div><div><br></div><div><br></div><div>https://travis-ci.org/scribusproject/scribus/jobs/95496650#L2421-L2428</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/plugins/import/revenge/rawpainter.cpp: In member function ‘virtual void RawPainter::drawGraphicObject(const WPXPropertyList&, const WPXBinaryData&)’:</div><div><br></div><div>/home/travis/build/scribusproject/scribus/scribus/plugins/import/revenge/rawpainter.cpp:2953:20: warning: ‘ite’ may be used uninitialized in this function [-Wmaybe-uninitialized]</div><div><br></div><div>    applyShadow(ite);</div><div><br></div><div><br></div><div><br></div><div>I would initialize ite = NULL in the declaration at line 2848.</div><div><br></div><div>Then at the calls to applyFlip and applyShadow, I would write "if (ite) { applyFlip(ite); if (CurrColorFill != CommonStrings::None) applyShadow(ite); }"</div><div><br></div><div>That way, anyone reading the code later can easily see that 1) ite is always initialized and that 2) whatever happens in the big block of code, applyFlip() and applyShadow() will never be called unless they have an item.</div><div><br></div><div><br></div><div>Regards,</div><div>William</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div>                                           </div></body>
</html>