é³æ¥œãæ±ãããã°ã©ã ã«ã¯å°éã®ã³ãŒãããããæåã¯èšäºã«åââåãªæ°ã®ãšã©ãŒãèŠã€ããå¯èœæ§ãçã£ãŠããŸããã ç§ã¯ãŸã é³æ¥œãœãããŠã§ã¢ã®ãããã¯ã«è§Šãããã£ãã®ã§ãèšäºã®ããã€ãã®ãããžã§ã¯ããçµã¿åãããæºåãã§ããŠããŸããã ãããŠä»ãç§ã¯3çªç®ã®èšäºãæžããŠããŸããäœããã®åœ¢ã§èå³æ·±ããšã©ãŒã1ã€ã®èšäºã«åããããšããŠããŸãã åæã®ããã®3çªç®ã®ãããžã§ã¯ãã¯ãMIDIã·ãŒã±ã³ãµãŒããã³é³æ¥œãšãã£ã¿ãŒRosegardenã§ããã 泚æïŒ èšäºãèªããšFacepalmãåŒã³åºãããŸãïŒ
ã¯ããã«
Rosegardenã¯ç¡æã®MIDIã·ãŒã±ã³ãµãŒã§ãããALSAãšJACKã䜿çšããLinuxçšã®é³æ¥œãšãã£ã¿ãŒã§ããAppleLogic ProãCakewalk SonarãSteinberg Cubaseãªã©ã®é³æ¥œãäœæããã³ç·šéããããã°ã©ã ã§ãã
ãã®èšäºã«ã¯ãPVS-Studioã䜿çšããŠèŠã€ããæãèå³æ·±ããšã©ãŒã®ã¿ãå«ãŸããŠããŸãã å®å
šãªã¬ããŒãã衚瀺ããããã«ãäœæè
ã¯ãµããŒãã®äžæããŒãèŠæ±ããããšã«ããããããžã§ã¯ããåå¥ã«æ€èšŒã§ããŸãã
PVS-Studioã¯ãCãC ++ãCïŒã§èšè¿°ãããããã°ã©ã ã®ãœãŒã¹ã³ãŒãã®ãšã©ãŒãæ€åºããããã®ããŒã«ã§ãã Windowsããã³Linuxã§åäœããŸãã
ããŒã¿ãããŒåæã圹ç«ã€ãšã©ãŒæ€åºã®äŸ
誀ã£ãèŠåã¯ãåžžã«ãããã§ãã·ã§ãã«ãªéçã³ãŒãã¢ãã©ã€ã¶ãŒã¬ããŒãã®äžéšã圢æããŸãã 人ã
ãåã«ã³ãŒããããè¯ãæžããããªããåã«èŠåãåœãšããŠæžãèœãšããããªãã®ã¯æ®å¿µã§ãã ã³ãŒãã¯ãä»ã®ããã°ã©ãããããã°ããã«ç解ã§ããªããããªæ··ä¹±ã§æžãããŠããå ŽåããããŸãã äœããã®æ¹æ³ã§ãã¢ãã©ã€ã¶ãŒã誀ã£ãèŠåãåºããªãããã«ããã®ãããªç¶æ³ãèæ
®ããããšããŸãã ãã®ãããããŒã¿ãããŒåæã¯çŸåšæŽ»çºã«éçºãããŠããã誀ã£ãèŠåã®æ°ãæžããããšã«å ããŠãèå³æ·±ããšã©ãŒãèŠã€ããããšãã§ããŸãã
V560æ¡ä»¶åŒã®äžéšã¯åžžã«falseã§ãïŒsingleStaffã NotationScene.cpp 1707
void NotationScene::layout(....) { .... bool full = (singleStaff == 0 && startTime == endTime); m_hlayout->setViewSegmentCount(m_staffs.size()); if (full) { Profiler profiler("....", true); m_hlayout->reset(); m_vlayout->reset(); bool first = true; for (unsigned int i = 0; i < m_segments.size(); ++i) { if (singleStaff &&
forã«ãŒãã®è«çãšã©ãŒã®
ãã ã
continueã¹ããŒãã¡ã³ãã¯å®è¡ããããããããã«ãŒãã®äžå¿
èŠãªå埩ã«ã€ãªãããŸãã ãã®çç±ã¯ãã&&ãæŒç®åã䜿çšããŠæ¡ä»¶å
ã®
singleStaffãã€ã³ã¿ãŒããã§ãã¯ããããã§ãã
singleStffãã€ã³ã¿ãŒã®å€
ã¯åžžã«ãŒãã§ãã ã¢ãã©ã€ã¶ãŒã
singleStaffå€æ°ãžã®äŸåãæ€åºããããšãèšç®ããå Žåããã®ã³ãŒãã¯ãã¹ãŠãifïŒfullïŒããšããæ¡ä»¶ã®äžã«ãããŸãã
bool full = (singleStaff == 0 && startTime == endTime);
å®å
šãªå€æ°ã®å€ã¯ã
singleStaffãã€ã³ã¿ãŒãnullã®å Žåã«ã®ã¿
çã«ãªããŸãã
å°éäžèœã³ãŒãã®ç©èª
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãäœããã®æ¹æ³ã§ã³ãŒãé害ã«ã€ãªãããšã©ãŒã®ããŸããŸãªäŸãåéããŸããã ããã¯ãã¹ãŠã
CWE-571ã«é©çšãããŸã
ïŒåŒã¯åžžã«True ã
CWE-570ïŒåŒã¯åžžã«False ã
CWE-561ïŒDead Codeãšãã®ããªãšãŒã·ã§ã³ã
V547åŒ 'ïŒBeamedSomething'ã¯åžžã«çã§ãã SegmentNotationHelper.cpp 1405
void SegmentNotationHelper::makeBeamedGroupAux(....) { int groupId = segment().getNextId(); bool beamedSomething = false;
ãã®äŸã¯ãåã®ã»ã¯ã·ã§ã³ã®ã³ãŒãã«éåžžã«äŒŒãŠããŸãããå°ãåçŽã§ãã
beamedSomethingå€æ°
㯠falseã«åæåãããå€æŽãããªããªããŸããã ãã®çµæã
continueã¹ããŒãã¡ã³ãã¯åžžã«
forã«ãŒãã§å®è¡ãããããã倧ããªã³ãŒããå®è¡ãããããšã¯ãããŸããã
V547åŒ 'i> 5'ã¯åžžã«falseã§ãã SegmentParameterBox.cpp 323
void SegmentParameterBox::initBox() { .... for (int i = 0; i < 6; i++) { timeT time = 0; if (i > 0 && i < 6) { time = Note(Note::Hemidemisemiquaver).get.... << (i - 1); } else if (i > 5) { time = Note(Note::Crotchet).getDuration() * (i - 4); } .... }
ã«ãŒãã«ãŠã³ã¿ãŒã¯ã0ã5ã®ç¯å²ã®å€ãåããŸããæåã®æ¡ä»¶åŒã¯ããŒããé€ãã«ãŠã³ã¿ãŒã®ãã¹ãŠã®å€ã«å¯ŸããŠå®è¡ãããŸããã2çªç®ã®æ¡ä»¶åŒã¯å®è¡ãããŸããã å€æ°
iã®å€ã6以äžã§ããããšãæåŸ
ããŠããŸãã
V547åŒãadjustedOctave <8ãã¯åžžã«falseã§ãã NotePixmapFactory.cpp 1920
QGraphicsPixmapItem* NotePixmapFactory::makeClef(....) { .... int oct = clef.getOctaveOffset(); if (oct == 0) return plain.makeItem(); int adjustedOctave = (8 * (oct < 0 ? -oct : oct)); if (adjustedOctave > 8) adjustedOctave--; else if (adjustedOctave < 8) adjustedOctave++; .... }
ãµã³ãã«ãé çªã«åæãå§ããŸãã
octå€æ°
ã¯ãæåã«ç¬Šå·ä»ãåã®ç¹å®ã®å€ã§åæåããã次ã«ãŒãå€ããã®ç¯å²ããé€å€ãããŸãã 次ã«ãå€æ°
octã®ã¢ãžã¥ãŒã«
ãèšç®ããã8ãä¹ç®ãããŸããadjustedOctaveã®çµæã®å€ã®ç¯å²ã¯[8..NïŒã«ãªãããã§ãã¯ïŒadjustedOctave <8ïŒã¯ç¡æå³ã«ãªããŸãã
V547åŒ '""'ã¯åžžã«çã§ãã LilyPondOptionsDialog.cpp 64
LilyPondOptionsDialog::LilyPondOptionsDialog(....) { setModal(true); setWindowTitle((windowCaption = "" ? tr("LilyPond Export/Preview") : windowCaption)); .... }
ã¢ãŒãã«ãŠã£ã³ããŠã®ã¿ã€ãã«ã®åœ¢æã«é¢ããèå³æ·±ããšã©ãŒã ã©ããããçŸåšã®å€ãæ¬ èœããŠããå Žåã«æ°ãããŠã£ã³ããŠã¿ã€ãã«ãèšå®ãããã£ãã®ã§ãããã¹ããŒãã¡ã³ãã«èª€ãããããŸããã
ããã«ã¿ã€ããã¹ã«æ°ã¥ããªãã£ã人ã®ããã«ãç§ã¯ããªãã«è©±ããŸãã ã==ãæŒç®åã§ã¯ãªããã==ãæŒç®åã䜿çšããå¿
èŠããããŸããã
å¥ã®ãŠã£ã³ããŠã衚瀺ãããšãã«åãã³ãŒãã䜿çšãããŸãã
- V547åŒ '""'ã¯åžžã«çã§ãã MusicXMLOptionsDialog.cpp 60
ã泚æ ã³ãŒãã®äœæè
ã1è¡ã«æ°ããã¿ã€ãã«ãèšå®ãããã®æ¹æ³ã§å€ãã¿ã€ãã«ãæ¶å»ãããå Žåãããã-æžãããšã¯ã¯ãŒã«ã§ã¯ãããŸããã
V517 ãifïŒAïŒ{...} else ifïŒAïŒ{...}ããã¿ãŒã³ã®äœ¿çšãæ€åºãããŸããã è«çãšã©ãŒãååšããå¯èœæ§ããããŸãã è¡ã確èªããŠãã ããïŒ223ã239ãIntervalDialog.cpp 223
QString IntervalDialog::getIntervalName(....) { .... if (deviation == -1) textIntervalDeviated += tr("a minor"); else if (deviation == 0)
æ¡ä»¶ã®1ã€ãäžèŠã§ãããããšã©ãŒãèšé²ãããŠããŸãã å€0ã¯ãæåã«ãã§ã«åŠçãããŠããŸãã
ã³ã¡ã³ããªã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããã¡ã€ã«ãæäœããããã®èå³æ·±ãã³ãŒãã¹ãããããæäŸããŸãã ããã°ã©ããŒã¯ãCïŒãJavaãªã©ã®ããã°ã©ãã³ã°èšèªã«è§Šçºãããããã§ãã ããã§ãªãå Žåãåã«ã¹ã¿ãã¯äžã®å€æ°ãšããŠ
ifstreamåã®ã€ã³ã¹ã¿ã³ã¹ãäœæããªãçç±ã¯æããã§ã¯ãããŸããã ããã§ã¯ãåçã¡ã¢ãªå²ãåœãŠãæããã«åé·ã§ãããããã«ããšã©ãŒã®åå ã«ãªããŸããã
V773 ãtestFileããã€ã³ã¿ãŒã解æŸããã«é¢æ°ãçµäºããŸããã ã¡ã¢ãªãªãŒã¯ãçºçããå¯èœæ§ããããŸãã RIFFAudioFile.cpp 561
AudioFileType RIFFAudioFile::identifySubType(const QString &filename) { std::ifstream *testFile = new std::ifstream(filename.toLocal8Bit(), std::ios::in | std::ios::binary); if (!(*testFile)) return UNKNOWN; .... testFile->close(); delete testFile; delete [] bytes; return type; }
ãã¡ã€ã«ã«åé¡ãçºçããå Žåãé¢æ°ã®çµäºæã«
testFileãã€ã³ã¿ãŒ
ã¯è§£æŸãããŸããã ããã¯äžè¬çãªã¡ã¢ãªãªãŒã¯ãã¿ãŒã³ã§ãã
V773é¢æ°ã¯ããmidiFileããã€ã³ã¿ãŒã解æŸããã«çµäºããŸããã ã¡ã¢ãªãªãŒã¯ãçºçããå¯èœæ§ããããŸãã MidiFile.cpp 1531
bool MidiFile::write(const QString &filename) { std::ofstream *midiFile = new std::ofstream(filename.toLocal8Bit(), std::ios::out | std::ios::binary); if (!(*midiFile)) { RG_WARNING << "write() - can't write file"; m_format = MIDI_FILE_NOT_LOADED; return false; } .... midiFile->close(); return true; }
ãã®ã³ãŒãã¯åã®ãã®ãšåãã ãšæããããããŸããããããã¯å®å
šã«çå®ã§ã¯ãããŸããã æåã®äŸãšã¯ç°ãªãããã®é¢æ°ã«ã¯ç©ºãã¡ã¢ãªããŸã£ãããããŸããã ã¡ã¢ãªãªãŒã¯ã¯åžžã«çºçããŸãã
V668 ãnewãæŒç®åã䜿çšããŠã¡ã¢ãªãå²ãåœãŠãããããããfileããã€ã³ã¿ãŒãnullã«å¯ŸããŠãã¹ãããŠãæå³ããããŸããã ã¡ã¢ãªå²ãåœãŠãšã©ãŒã®å ŽåãäŸå€ãçæãããŸãã SF2PatchExtractor.cpp 94
SF2PatchExtractor::Device SF2PatchExtractor::read(string fileName) { Device device; ifstream *file = new ifstream(fileName.c_str(), ios::in |....); if (!file) throw FileNotFoundException(); .... }
ãã®ã³ãŒãã®åé¡ã®ãªã¹ãã¯æ¬¡ã®ãšããã§ãã
- ã³ãŒãã¯éåžžã«è€éã§ãã
- ããã§ã¯ããã€ã³ã¿ã®ãã§ãã¯ã¯æå³ããããŸããïŒãªããžã§ã¯ãã«ã¡ã¢ãªãå²ãåœãŠãããšãã§ããªãå Žåã newæŒç®åã¯äŸå€ãã¹ããŒããŸãïŒã
- ãã¡ã€ã«ããªããšããç¶æ³ã¯åŠçãããŸããã
- ã¡ã¢ãªãªãŒã¯ ãã€ã³ã¿ã¯ä»ã®ã©ãã§ã解æŸãããŸããã
ãããŠããã®å Žæã¯1ã€ã§ã¯ãããŸããã
- V668ã¡ã¢ãªã¯ãnewãæŒç®åã䜿çšããŠå²ãåœãŠãããããããstatstreamããã€ã³ã¿ãŒãnullã«å¯ŸããŠãã¹ãããæå³ã¯ãããŸããã ã¡ã¢ãªå²ãåœãŠãšã©ãŒã®å ŽåãäŸå€ãçæãããŸãã RosegardenMainWindow.cpp 4672
- V668ãnewãæŒç®åã䜿çšããŠã¡ã¢ãªãå²ãåœãŠãããããããfileããã€ã³ã¿ãŒãnullã«å¯ŸããŠãã¹ãããŠãæå³ããããŸããã ã¡ã¢ãªå²ãåœãŠãšã©ãŒã®å ŽåãäŸå€ãçæãããŸãã SF2PatchExtractor.cpp 67
ããŒã¿åã®äžå
·å
V601æŽæ°åã¯æé»çã«charåã«ãã£ã¹ããããŸãã MidiEvent.cpp 181
QDebug & operator<<(QDebug &dbg, const MidiEvent &midiEvent) { timeT tempo; int tonality; std::string sharpflat; .... tonality = (int)midiEvent.m_metaMessage[0]; if (tonality < 0) { sharpflat = -tonality + " flat";
調æ§å€æ°ã®å€ãã42ãã§ãã³ãŒãã§ç€ºãããŠããå Žæã§ãã42 flatããŸãã¯ã42 sharpãã®ãããªè¡ãååŸããããšããŸãã ããããããã¯ããã°ã©ããæåŸ
ããããã«ã¯ãŸã£ããæ©èœããŸããã æ°å€ããæååãžã®å€æã¯ãããŸãããã代ããã«ãã·ããããããã€ã³ã¿ãæååã«æ ŒçŽããããããã¡å
ã«ãŽãã圢æãããŸãã ãŸãã¯ã
ã¢ã¯ã»ã¹éåãçºçããŸãã ãŸãã¯ãé
åã®å¢çã«ã¢ã¯ã»ã¹ãããšããã°ã©ã ã®åäœãæªå®çŸ©ã«ãªããããäœãèµ·ãããŸããã
次ã®ããã«ãšã©ãŒãä¿®æ£ã§ããŸãã
if (tonality < 0) { sharpflat = to_string(-tonality) + " flat"; } else { sharpflat = to_string(tonality); sharpflat += " sharp"; }
V674 ãdoubleãã¿ã€ãã®ã0.1ããªãã©ã«ã¯ããintãã¿ã€ãã®å€ãšæ¯èŒãããŸãã ãm_connectingLineLength> 0.1ãåŒã®æ€æ»ãæ€èšããŠãã ããã StaffLayout.cpp 1028
class StaffLayout { .... protected: int m_connectingLineLength; .... } int m_connectingLineLength; void StaffLayout::resizeStaffLineRow(int row, double x, double length) { .... if (m_pageMode != LinearMode && m_connectingLineLength > 0.1) { .... }
intå€æ°ãšå€0.1ã®æ¯èŒã¯ç¡æå³ã§ãã ããããä»ã®äœããããã§èæ¡ãããŸããã ãããžã§ã¯ãã®äœæè
ã¯ããã®ã³ãŒããæ
éã«æ€èšããå¿
èŠããããŸãã
V601æååãªãã©ã«ã¯æé»çã«ããŒã«åã«ãã£ã¹ããããŸãã FileSource.cpp 902
bool FileSource::createCacheFile() { { QMutexLocker locker(&m_mapMutex); #ifdef DEBUG_FILE_SOURCE std::cerr << "...." << m_refCountMap[m_url] << std::endl; #endif if (m_refCountMap[m_url] > 0) { m_refCountMap[m_url]++; m_localFilename = m_remoteLocalMap[m_url]; #ifdef DEBUG_FILE_SOURCE std::cerr << "...." << m_refCountMap[m_url] << std::endl; #endif m_refCounted = true; return true; } } QDir dir; try { dir = TempDirectory::getInstance()->....; } catch (DirectoryCreationFailed f) { #ifdef DEBUG_FILE_SOURCE std::cerr << "...." << f.what() << std::endl; #endif return ""; // <= } .... }
1ã€ã®å Žæã§ã¯ãé¢æ°ã¯
true / falseã®ä»£ããã«ç©ºã®æååãè¿ã
ãŸã ãããã¯åžžã«
trueãšè§£éãã
ãŸã ã
ã€ãã¬ãŒã¿ãŒã®ãšã©ãŒ
ãã®ãããžã§ã¯ãã§ã€ãã¬ãŒã¿ã䜿çšããããšã¯ããã¡ã€ã«ãæäœããããšãšåããããå¥åŠã«èŠããŸãã
V783ç¡å¹ãªã€ãã¬ãŒã¿ãŒãiãã®
éåç
§ãè¡ãããå¯èœæ§ããããŸãã IconStackedWidget.cpp 126
void IconStackedWidget::slotPageSelect() { iconbuttons::iterator i = m_iconButtons.begin(); int index = 0; while (((*i)->isChecked() == false) && (i != m_iconButtons.end())) { ++i; index++; } m_pagePanel->setCurrentIndex(index); }
whileã«ãŒãã§ã¯ ãå埩å
iããã§ãã¯ããé åº
ãæ··åãããŸãã ãã®ã³ãŒãã«ã¯çããããšã¯äœããããŸãããå€å
žçãªééãã§ãã
V783ç¡å¹ãªã€ãã¬ãŒã¿ãŒãbeatTimeTs.endïŒïŒãã®
éåç
§ãè¡ãããå ŽåããããŸãã CreateTempoMapFromSegmentCommand.cpp 119
void CreateTempoMapFromSegmentCommand::initialise(Segment *s) { .... std::vector<timeT> beatTimeTs; .... for (int i = m_composition->...At(*beatTimeTs.begin() - 1) + 1; i <= m_composition->...At(*beatTimeTs.end() - 1); ++i){ .... }
ã¢ãã©ã€ã¶ãŒã¯ã
endïŒïŒã€ãã¬ãŒã¿ãŒãžã®åŒã³åºãããã1ã€æ€åºããŸããã ãããããããªãã¯ãã®ã³ãŒãã®ãããªãã®ãæã«å
¥ããããšæãã§ãããïŒ
...At(*(beatTimeTs.end() - 1))
ããããæ¬åŒ§ãå¿ããŠããŸããã
å¥ã®ãã¡ã€ã«ã«åæ§ã®ã³ãŒãããããŸãïŒ
- V783ç¡å¹ãªã€ãã¬ãŒã¿ãŒãm_segments.endïŒïŒãã®éåç
§ãè¡ãããå ŽåããããŸãã StaffHeader.cpp 250
ãã€ã³ã¿ãŒã®ãšã©ãŒ
V1004 nullptrã«å¯ŸããŠæ€èšŒãããåŸãããã©ãã¯ããã€ã³ã¿ãŒãå®å
šã«äœ¿çšãããŸããã§ããã è¡ã確èªïŒ319ã329ãMatrixView.cpp 329
void MatrixView::slotUpdateWindowTitle(bool m) { .... Track *track = m_segments[0]->getComposition()->getTrackById(trackId); int trackPosition = -1; if (track) trackPosition = track->getPosition();
ç¢å°ã䜿çšããŠã
ãã©ãã¯ãã€ã³ã¿ãŒãéåç
§ããã2ã€ã®å ŽæãããŒã¯ããŸããã æåã®å Žæã¯å®å
šã§ã ãã€ã³ã¿ã¯ééããªããŒãã§ã¯ãããŸããã 2çªç®ã¯ãæªå®çŸ©ã®ããã°ã©ã ã®åäœã«ã€ãªããå¯èœæ§ããããŸãã äžèšã®ã³ãŒãã¹ããããã«ã¯ãéæ¥çãªãã§ãã¯ã¯ãããŸããã ã³ãŒãã¯é 次å®è¡ãããæœåšçãªãšã©ãŒãå«ãŸããŠããŸãã
ãã®ä»ã®å±éºãªéåç
§ãã€ã³ã¿ãŒïŒ
- V1004 nullptrã«å¯ŸããŠæ€èšŒãããåŸãããã©ãã¯ããã€ã³ã¿ãŒãå®å
šã«äœ¿çšãããŸããã§ããã ãã§ãã¯è¡ïŒ2528ã2546ãRosegardenDocument.cpp 2546
- V1004ãinstããã€ã³ã¿ãŒã¯ãnullptrã«å¯ŸããŠæ€èšŒãããåŸãå®å
šã«äœ¿çšãããŸããã§ããã è¡ã確èªããŠãã ããïŒ392ã417ãManageMetronomeDialog.cpp 417
- V1004 nullptrã«å¯ŸããŠæ€èšŒãããåŸããã³ã³ãããŒã©ãŒããã€ã³ã¿ãŒãå®å
šã«äœ¿çšãããŸããã§ããã è¡ã確èªããŠãã ããïŒ75ã84ãControllerEventsRuler.cpp 84
V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_sceneããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªïŒ1001ã1002ãNotationWidget.cpp 1001
void NotationWidget::slotEnsureTimeVisible(timeT t) { m_inMove = true; QPointF pos = m_view->mapToScene(0,m_view->height()/2); pos.setX(m_scene->getRulerScale()->getXForTime(t));
Diagnostics
V595ã¯ãåæ§ã®ã¿ã€ãã®ãšã©ãŒãæ€åºããŸãã ããã§ã
s_sceneãã€ã³ã¿ãŒ
㯠1è¡ã§éåç
§ããã次ã®è¡ã§ããã«æå¹ãã©ããããã§ãã¯ãããŸãã
V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_hideSignatureButtonããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ248ã258ãTimeSignatureDialog.cpp 248
TimeSignature TimeSignatureDialog::getTimeSignature() const { QSettings settings; settings.beginGroup( GeneralOptionsConfigGroup ); settings.setValue("timesigdialogmakehidden", m_hideSignatureButton->isChecked());
åã®äŸãšåæ§ã®ééãã§ããããšã«ãããã®ã³ãŒããæã¡èŸŒãããšã«ããŸããã ããã§ã¯ãæœåšçã«ãã«ã®ãã€ã³ã¿ãŒã®3ã€ã®éåç
§ãããã«å®è¡ãããŸãã
ä»ã®ãã¹ãŠã®åæ§ã®å Žæããªã¹ãããŸãã
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_timeTããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ690ã696ãTimeWidget.cpp 690
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_sceneããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ526ã538ãNoteRestInserter.cpp 526
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããã¢ã€ãã ããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªïŒ318ã320ãTempoView.cpp 318
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_sceneããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªïŒ902ã903ãMatrixWidget.cpp 902
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_seqManagerããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ1029ã1058ãRosegardenMainWindow.cpp 1029
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_seqManagerããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ5690ã5692ãRosegardenMainWindow.cpp 5690
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_seqManagerããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ5701ã5704ãRosegardenMainWindow.cpp 5701
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_controllerããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ553ã563ãControllerEventsRuler.cpp 553
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããeããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ418ã420ãMarkerRuler.cpp 418
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_docããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ490ã511ãSequenceManager.cpp 490
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_groupLocalEventBuffersããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ329ã335ãDSSIPluginInstance.cpp 329
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããm_instrumentMixerããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ699ã709ãAudioProcess.cpp 699
ãŸããªééã
ã¯ã©ã¹ã¡ã³ããŒã®åæåé åºã®ãšã©ãŒã¯éåžžã«ãŸãã§ãã ãšã©ãŒããŒã¿ããŒã¹ã«ã¯ããã®ãšã©ãŒãžã®
åç
§ã¯12åãããããŸããã
V670åæåãããŠããªãã¯ã©ã¹ã¡ã³ã㌠'m_intervals'ã¯ã 'm_size'ã¡ã³ããŒãåæåããããã«äœ¿çšãããŸãã ã¡ã³ããŒã¯ãã¯ã©ã¹å
ã®å®£èšã®é åºã§åæåãããããšã«æ³šæããŠãã ããã Tuning.cpp 394
class Tuning { .... int m_size;
ã¯ã©ã¹ãã£ãŒã«ãã¯ãã¯ã©ã¹ã§å®çŸ©ãããŠããé åºã§åæåãããŸãã äžèšã®ã³ãŒãäŸã§ã¯ã
m_sizeãã£ãŒã«ã
ãæåã«åæåããã誀ã£ãå€ã«ãªããŸãã
éå€
V557é
åã®ãªãŒããŒã©ã³ãå¯èœã§ãã ããµããã¹ã¿ãŒãã€ã³ããã¯ã¹ã®å€ã¯64ã«éããå¯èœæ§ããããŸããSequencerDataBlock.cpp 325
#define SEQUENCER_DATABLOCK_MAX_NB_SUBMASTERS 64 class SequencerDataBlock { .... protected: int m_submasterLevelUpdateIndices[64]; .... } bool SequencerDataBlock::getSubmasterLevel(int submaster, ....) const { ....int lastUpdateIndex[SEQUENCER_DATABLOCK_MAX_NB_SUBMASTERS]; if (submaster < 0 || submaster > SEQUENCER_DATABLOCK_MAX_NB_SUBMASTERS) { info.level = info.levelRight = 0; return false; } int currentUpdateIndex=m_submasterLevelUpdateIndices[submaster]; info = m_submasterLevels[submaster]; if (lastUpdateIndex[submaster] != currentUpdateIndex) { lastUpdateIndex[submaster] = currentUpdateIndex; return true; } else { return false; // no change } }
ãã®ééãã¯ãã§ã«å€å
žã«ãªã£ãŠããŸãã é
åã€ã³ããã¯ã¹ãæ倧å€ãšæ¯èŒããå Žåãäœããã®çç±ã§æŒç®åã>ããšã> =ããåžžã«æ··åãããŸãã ãã®ãããªãšã©ãŒã¯ãã¢ã¬ã€å€ãžã®ã¢ã¯ã»ã¹ã«ã€ãªãããŸãã ãã®å Žåã2ã€ã®ã¢ã¬ã€ã«ããã
æ£ãããã§ãã¯ã¯æ¬¡ã®ããã«ãªããŸãã
if (submaster < 0 || submaster >= SEQUENCER_DATABLOCK_MAX_NB_SUBMASTERS) {
ãã®ãããªã³ãŒãã¯ãããã«2ã€ã®é¢æ°ã«ã³ããŒãããŸãã
- V557é
åã®ãªãŒããŒã©ã³ãå¯èœã§ãã ããµããã¹ã¿ãŒãã€ã³ããã¯ã¹ã®å€ã¯64ã«éããå¯èœæ§ããããŸããSequencerDataBlock.cpp 343
- V557é
åã®ãªãŒããŒã©ã³ãå¯èœã§ãã ããµããã¹ã¿ãŒãã€ã³ããã¯ã¹ã®å€ã¯64ã«éããå¯èœæ§ããããŸããSequencerDataBlock.cpp 344
V612ã«ãŒãå
ã®ç¡æ¡ä»¶ã®ããã¬ãŒã¯ãã Fingering.cpp 83
Fingering::Barre Fingering::getBarre() const { int lastStringStatus = m_strings[getNbStrings() - 1]; Barre res; res.fret = lastStringStatus; for(unsigned int i = 0; i < 3; ++i) { if (m_strings[i] > OPEN && m_strings[i] == lastStringStatus) res.start = i; break; } res.end = 5; return res; }
ã¹ã¿ã€ã«ãCïŒãŸãã¯Javaã«äŒŒãŠããã³ãŒãäŸãæ¢ã«ç€ºããŸããã Pythonèšèªã«ã¯æ確ãªé¡äŒŒç¹ããããŸãã æ®å¿µãªããïŒã³ãŒãã®äœæè
ã«ãšã£ãŠïŒãããã¯C ++ã§ã¯æ©èœããŸããã
breakã¹ããŒãã¡ã³ãã¯æ¡ä»¶å
ã«ãããŸããããã«ãŒãã®æåã®ç¹°ãè¿ãã§åžžã«å®è¡ãããŸãã
V746ãªããžã§ã¯ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã MupExporter.cpp 197
timeT MupExporter::writeBar(....) { .... try {
å€ã§äŸå€ããã£ãããããšãããã€ãã®ã¿ã€ãã®ãšã©ãŒãçºçããå¯èœæ§ããããŸãã ãããžã§ã¯ãã³ãŒãã§ããã®ã¯ã©ã¹ãèŠã€ããŸããã
class BadSoundFileException : public Exception
å€ã§äŸå€ããã£ãããããšã
Exceptionã¯ã©ã¹ã®æ°ãããªããžã§ã¯ããäœæãããç¶æ¿ãããã¯ã©ã¹
BadSoundFileExceptionã«é¢ããæ
å ±ã¯å€±ãããŸãã
ãããžã§ã¯ãã«ã¯ãã®ãããªå ŽæãçŽ50ãããŸãã
V523 ãthenãã¹ããŒãã¡ã³ãã¯ãelseãã¹ããŒãã¡ã³ããšåçã§ãã HydrogenXMLHandler.cpp 476
bool HydrogenXMLHandler::characters(const QString& chars) { bool rc=false; if (m_version=="") { rc=characters_093(chars); } else { rc=characters_093(chars); } return rc; }
äžå¯©ãªå Žæã ç°ãªãã³ã¡ã³ããããããšã¯ç°ãªãã³ãŒãã瀺åããŠããŸãããããã§ã¯ããã§ã¯ãããŸããã
2ã€ã®åæ§ã®èŠåïŒ
- V523ãthenãã¹ããŒãã¡ã³ãã¯ãelseãã¹ããŒãã¡ã³ããšåçã§ãã HydrogenXMLHandler.cpp 182
- V523ãthenãã¹ããŒãã¡ã³ãã¯ãelseãã¹ããŒãã¡ã³ããšåçã§ãã HydrogenXMLHandler.cpp 358
ãããã«
ãããŸã§ã®ãšãããããã¯ã¬ãã¥ãŒã®äžã§æãã³ãŒãå質ãäœããããžã§ã¯ãã§ãã ããã«èª¿æ»ãç¶ããŸãã
ãã®ä»ã®ã¬ãã¥ãŒïŒ
é³æ¥œãæ±ãããã®èå³æ·±ããœãããŠã§ã¢ãç¥ã£ãŠããŠãã¬ãã¥ãŒã§èŠããå Žåã¯ãååã
ã¡ãŒã«ã§ç§ã«éã£ãŠãã ããã
ãããžã§ã¯ãã§PVS-Studioã¢ãã©ã€ã¶ãŒãè©Šãã®ã¯éåžžã«ç°¡åã§ãã
ããŠã³ããŒãããŒãžã«é²ãã§ãã ããã
è±èªã話ãèŽè¡ãšãã®èšäºãå
±æãããå Žåã¯ã翻蚳ãžã®ãªã³ã¯ã䜿çšããŠãã ããïŒSvyatoslav Razmyslovã
é³æ¥œãœãããŠã§ã¢ã®ã³ãŒãæ¬ é¥ã®ã¬ãã¥ãŒããŒã3. Rosegarden