
å
æ¥ãTOONZãããžã§ã¯ãã®äœæè
ã§ããDigital Videoãšæ¥æ¬ã®åºç瀟DWANGOãã2Dã¢ãã¡ãŒã·ã§ã³ãäœæããããã®ãœãããŠã§ã¢ã§ããToonzãããžã§ã¯ãã®DWANGO瀟ã«ããè²·åã«é¢ããå¥çŽã«çœ²åããããšãããããŸããã
åœäºè
éã§ç· çµãããå¥çŽæ¡ä»¶ã«åºã¥ããToonzãéçºãããããžã§ã¯ãã§ããOpenToonzãžã®ãªãŒãã³ã¢ã¯ã»ã¹ãå
¬éãããŸãã ãŸãããããã®ããã°ã©ã ã®ã¢ã¯ãã£ããŠãŒã¶ãŒã§ããStudio GhibliãéçºããèŠçŽ ãå«ãŸããŸãã ããšãã°ãã¹ã¿ãžãªãžããªã¯ãããŠã«ã®ãŠã©ãŒãã³ã°ãã£ãã¹ã«ãããåãšåå°ã®ç¥é ããããããã§ãã£ãã·ã¥ããªã©ã®çµµç»ãäœæããŸããã ãã®äžã«ã¯ãFuturamaã®æŒ«ç»ããããŸããããã¯ãOpenToonzã®ãœãŒã¹ã³ãŒãã«é¢ãããã®æããã«ãªãèšäºãæžããã£ããã«ãªããŸããã
ã¯ããã«
OpenToonzã¯2Dã¢ãã¡ãŒã·ã§ã³ãœãããŠã§ã¢ã§ãã åºæ¬ã¯ãã€ã¿ãªã¢ã®äŒç€ŸDigital Videoã«ãã£ãŠéçºãããToonzãããžã§ã¯ãã§ãã Studio Ghibliã¯ãã®ããã°ã©ã ãæ¡çšããŠãé·å¹Žã«ããã£ãŠãã®ããã°ã©ã ã®äœ¿çšã«æåããŠããŸãã ã¢ãã¡ãŒã·ã§ã³æ ç»ã«å ããŠããã®ãããžã§ã¯ãã¯ã³ã³ãã¥ãŒã¿ãŒã²ãŒã ïŒDiscworld 2ããã³ClawïŒã«ãé¢äžããŠããŸããã
ããã±ãŒãžã®äŸ¡æ Œã¯ãããŸã§10,000ãã«ã§ããããã³ãŒãã®å質ã«ã¯å€ãã®èŠæããããŸãã ãã®ãããžã§ã¯ãã¯ãããããéçã¢ãã©ã€ã¶ãŒã«ãšã£ãŠå€©ã®æµã¿ã§ãã OpenToonzã®ãœãŒã¹ã³ãŒãã®ãµã€ãºã¯FreeBSDã«ãŒãã«ã®çŽ1/10ã§ãããPVS-Studioã¢ãã©ã€ã¶ãŒã䜿çšããŠ
40以äžã®é倧ãªãšã©ãŒãèŠã€ãããŸããããããã«å€ãããããŸãïŒ
OpenToonzã¯ãVisual Studio 2013ã§
PVS-StudioããŒãžã§ã³6.03éçã¢ãã©ã€ã¶ãŒã䜿çšããŠãã¹ããããŸãããéçã¢ãã©ã€ã¶ãŒã¯ãç©æ¥µçã«éçºãããC / C ++ / CïŒèšèªãšããŸããŸãªãã«ãã·ã¹ãã ããµããŒãããŸãã ãããžã§ã¯ãã®ã³ã³ãã€ã«äžã§ãã£ãŠããã³ã³ãã€ã©ã®èŠåã®æ°ãæ¥éã«å¢ãå§ãããšããç§ã¯èŠæããŠããŸããã ã¢ã»ã³ããªã®çµäºæããã®æ°ã¯1211åã§ããïŒ ã€ãŸã ãœãŒã¹ã³ãŒãã®å質管çã¯ã»ãšãã©ç¡èŠãããŠããŸããã ããã«ãäžéšã®ã³ã³ãã€ã©èŠåã¯
#pragma warningãã£ã¬ã¯ãã£ãã䜿çšããŠç¡å¹ã«ãããŸããããããã§ããšã©ãŒãçºçããŸãããããã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãã ãã®èšäºã¯ããããžã§ã¯ãã§å€ãã®å®éã®ãšã©ãŒãèŠã€ãã£ããšããäºå®ã«ãã£ãŠåºå¥ãããŸããããã¯éåžžãC / C ++ãåŠç¿ãå§ããã°ããã®åå¿è
ã«ãã£ãŠäœæãããŸãã ã¡ã¢ãªãšã©ãŒãšãã€ã³ã¿ãŒãšã©ãŒã§æ€åºãããã¢ãã©ã€ã¶ãŒã®èŠåã®èª¬æãéå§ããŸãã
誀ã£ãã¡ã¢ãªåŠç
V611ã¡ã¢ãªã¯ãnewãæŒç®åã䜿çšããŠå²ãåœãŠãããŸãããããfreeãæ©èœã䜿çšããŠè§£æŸãããŸããã ãè¡ã倿°ã®èåŸã«ããæäœããžãã¯ã調ã¹ãããšãæ€èšããŠãã ããã motionblurfx.cpp 288
template <class T> void doDirectionalBlur(....) { T *row, *buffer; .... row = new T[lx + 2 * brad + 2];
ããã§ãã¢ãã©ã€ã¶ãŒã¯ãäºææ§ã®ãªãæ¹æ³ã§åçã¡ã¢ãªãå²ãåœãŠãããè§£æŸãããããšãçºèŠããŸããã
æ°ãã[]æŒç®åãåŒã³åºããåŸã
delete []æŒç®åã䜿çšããŠã¡ã¢ãªãè§£æŸããå¿
èŠããããŸãã 2ã€ã®è§æ¬åŒ§ä»ãã§ãïŒ ããã«ã¯çç±ããããŸããæ¬¡ã®äŸãåç
§ããŠãã ããã
V611ã¡ã¢ãªãŒã¯ãnew T []ãæŒç®åã䜿çšããŠå²ãåœãŠãããŸãããããdeleteãæŒç®åã䜿çšããŠè§£æŸãããŸããã ãã®ã³ãŒãã調ã¹ãããšãæ€èšããŠãã ããã ãdelete [] uPrime;ãã䜿çšããããšããå§ãããŸãã tstroke.cpp 3353
double *reparameterize3D(....) { double *uPrime = new double[size];
C ++ã§ã¯ãæŒç®å
new /
deleteããã³
new [] /
delete []ãäºãã«çµã¿åãããŠäœ¿çšââãããŸãã ç°ãªãæŒç®åã䜿çšããŠåçã¡ã¢ãªãå²ãåœãŠããè§£æŸãããããã®ã¯ééãã§ãã äžèšã®ã³ãŒãã§ã¯ã
uPrimeé
åã«ãã£ãŠå æãããŠããã¡ã¢ãªã¯æ£ããè§£æŸãããŸããã
æ®å¿µãªããããããå¯äžã®å Žæã§ã¯ãããŸããã
OpenToonz_V611.txtãã¡ã€ã«ã«ããã«20ç®æãæžã蟌ã¿ãŸããã
V554 auto_ptrã®èª€ã£ã䜿çšã ãnew []ãã§å²ãåœãŠãããã¡ã¢ãªã¯ããdeleteãã䜿çšããŠæ¶å»ãããŸãã screensavermaker.cpp 29
void makeScreenSaver(....) { .... std::auto_ptr<char> swf(new char[swfSize]); .... }
èæ
®ããããšã©ãŒã®ä»£æ¿ããªã¢ã³ãããããŸãããããã§ã¯
å逿Œç®åã¯ã¹ããŒããã€ã³ã¿ãŒ
std :: auto_ptrå
ã«ãé ãããŠããŸããã ããã¯ãæªå®çŸ©ã®ããã°ã©ã ã®åäœã«ãã€ãªãããŸãã
ãšã©ãŒãä¿®æ£ããã«ã¯ã
delete []æŒç®åã䜿çš
ããããã«æå®ããå¿
èŠããããŸãã
ã³ãŒãã®æ£ããããŒãžã§ã³ïŒ
std::unique_ptr<char[]> swf(new char[swfSize]);
V599 ãTTileSetãã¯ã©ã¹ã«ã¯ä»®æ³é¢æ°ãå«ãŸããŠããŸããããã¹ãã©ã¯ã¿ã¯ä»®æ³ãã¹ãã©ã¯ã¿ãšããŠå®£èšãããŠããŸããã cellselection.cpp 891
void redo() const { insertLevelAndFrameIfNeeded(); TTileSet *tiles;
次ã«ãã¡ã¢ãªãªãŒã¯ãšãªããžã§ã¯ãã®äžå®å
šãªç Žå£ã«ã€ããŠèª¬æããŸãã ãã®äŸã§ã¯ã
TTileSetã¯ã©ã¹ããç¶æ¿ããããªããžã§ã¯ãã¯å®å
šã«ã¯ç Žæ£ãããŸããã
TTileSetã¯ã©ã¹ã®
説æ ïŒ
class DVAPI TTileSet { .... protected: TDimension m_srcImageSize; typedef std::vector<Tile *> Tiles; Tiles m_tiles; public: TTileSet(const TDimension &dim) : m_srcImageSize(dim) { } ~TTileSet();
ãã®ã¯ã©ã¹ã«ã¯çŽç²ãªä»®æ³é¢æ°ãå«ãŸããŠãããæœè±¡ã¯ã©ã¹ã§ãã ãã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã¯äœæã§ããªããããæŽŸçã¯ã©ã¹ã§ã®ã¿äœ¿çšãããŸãã ãããã£ãŠãä»®æ³ãã¹ãã©ã¯ã¿
TTileSetããªãããïŒãã¹ãã©ã¯ã¿ã¯ãããŸãããä»®æ³ãšããŠããŒã¯ãããŠããŸããïŒããã¹ãŠã®æŽŸçã¯ã©ã¹ã¯å®å
šã«ã¯ãªã¢ãããŸããã
OpenToonzãœãŒã¹ã³ãŒãã§ã
TTileSetãç¶æ¿ããããã€ãã®ã¯ã©ã¹ãèŠã€ããŸããã
class DVAPI TTileSetCM32 : public TTileSet class DVAPI TTileSetCM32 : public TTileSet class DVAPI TTileSetFullColor : public TTileSet class DVAPI Tile : public TTileSet::Tile
ãããã®ã¯ã©ã¹ïŒãŸãã¯ãããããç¶æ¿ãããã¯ã©ã¹ïŒã®åãªããžã§ã¯ãã¯å®å
šã«ã¯ç Žæ£ãããŸããã æ£åŒã«ã¯ãããã¯æªå®çŸ©ã®ããã°ã©ã ã®åäœã«ã€ãªãããŸãã å®éã«ã¯ãããã¯ã¡ã¢ãªããã®ä»ã®ãªãœãŒã¹ã®ãªãŒã¯ã«ã€ãªããå¯èœæ§ããããŸãã
éçºè
ã¯ãããã«2ã€ã®åæ§ã®å Žæããã§ãã¯ã¢ãŠãããå¿
èŠããããŸãã
- V599ãMessageParserãã¯ã©ã¹ã«ã¯ä»®æ³é¢æ°ãå«ãŸããŠããŸãããä»®æ³ãã¹ãã©ã¯ã¿ã¯ååšããŸããã tipcsrv.cpp 91
- V599ãColumnToCurveMapperãã¯ã©ã¹ã«ã¯ä»®æ³é¢æ°ãå«ãŸããŠããŸãããä»®æ³ãã¹ãã©ã¯ã¿ã¯ååšããŸããã functionselection.cpp 278
ãã€ã³ã¿ãŒã®å±éºãªäœ¿çš
V503ããã¯ç¡æå³ãªæ¯èŒã§ãïŒãã€ã³ã¿ãŒ<0ãstyleselection.cpp104
bool pasteStylesDataWithoutUndo(....) { .... if (palette->getStylePage(styleId) < 0) {
getStylePageïŒïŒé¢æ°ã¯ãç¹å®ã®ããŒãž
TPalette :: Page *ãžã®ãã€ã³ã¿ãŒãè¿ããŸãã ãã®ãããªãŒããšã®æ¯èŒã¯æå³ããããŸããã
getStylePageïŒïŒé¢æ°ã®äœ¿çšãæ€çŽ¢ããåŸãä»ã®ãã¹ãŠã®ã±ãŒã¹ã§ããã®é¢æ°ã®çµæããŒããšçãããçãããªããã®ã¿ããã§ãã¯ããããã®æç¹ã§ãšã©ãŒãçºçããããšãããããŸããã
V522 NULLãã€ã³ã¿ãŒããªãŒãžã§ã³ãã®
éåç
§ãè¡ãããå ŽåããããŸãã è«çæ¡ä»¶ã確èªããŠãã ããã palettecmd.cpp 102
bool isStyleUsed(const TVectorImageP vi, int styleId) { .... TRegion *region = vi->getRegion(i); if (region || region->getStyle() != styleId) return true; .... }
ã»ãšãã©ã®å ŽåãæŒç®åã&&ããšã||ãã¯ãã®ã³ãŒããã©ã°ã¡ã³ãã§æ··ä¹±ããŠããŸãã ãã以å€ã®å Žåã
é åãã€ã³ã¿ãŒããŒãã®å Žåãéåç
§ãããŸãã
V614æœåšçã«åæåãããŠããªããã€ã³ã¿ãŒããœã±ãããã䜿çšãããŸããã 'connect'颿°ã®æåã®å®åŒæ°ã確èªããããšãæ€èšããŠãã ããã tmsgcore.cpp 36
void TMsgCore::OnNewConnection()
ã¢ãã©ã€ã¶ãŒã¯ãåæåãããŠããªã
ãœã±ãããã€ã³ã¿ãŒã®æœåšçãªäœ¿çšãæ€åºããŸããã
m_tcpServer倿°ãfalseã®å Žåããã€ã³ã¿ãŒã¯åæåãããŸããã ãã®åæåãããŠããªã圢åŒã§ã¯ãconnectïŒïŒé¢æ°ã«æž¡ãããšãã§ããŸãã
V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããbatchesTaskããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ1064ã1066ãbatches.cpp 1064
void BatchesController::update() { .... TFarmTask *batchesTask = getTask(batchesTaskId);
ã³ãŒãã«ã¯ãnullãã€ã³ã¿ãŒã®éåç
§ãçºçããå¯èœæ§ã®ããå€ãã®å ŽæããããŸãã éåžžãé©åãªãã§ãã¯ãååšããŸããããã€ã³ã¿ãŒã䜿çšããã1ã€ä»¥äžã®å Žæã¯ãšã«ããå®å
šã§ã¯ãããŸããã ããšãã°ããã®ã³ãŒãã¹ããããã«ã¯
batchesTaskãã§ãã¯ããããŸããããã§ãã¯ã®åã«ã1ã€ã®ãã€ã³ã¿ãŒéåç
§ãæ¢ã«å®è¡ãããŸãã
OpenToonz_V595.txtãã¡ã€ã«ã«ããã«29ã®åæ§ã®å ŽæãæžãçããŸããã
æååãšã©ãŒ
V530颿°ãtoUpperãã®æ»ãå€ã䜿çšããå¿
èŠããããŸãã sceneviewerevents.cpp 847
void SceneViewer::keyPressEvent(QKeyEvent *event) { .... QString text = event->text(); if ((event->modifiers() & Qt::ShiftModifier)) text.toUpper(); .... }
toUpperïŒïŒã¡ãœããã¯ãæååãtextãã倿ŽããŸããã ããã¥ã¡ã³ãã§ã¯ãQString QString :: toUpperïŒïŒconstãã€ãŸã 宿°ã¡ãœããã§ãã
ã³ãŒãã®æ£ããããŒãžã§ã³ïŒ
QString text = event->text(); if ((event->modifiers() & Qt::ShiftModifier)) text = text.toUpper();
ã³ãŒãã«ã¯ãæ»ãå€ã䜿çšãããªã颿°ãããã«3ã€å«ãŸããŠããŸãã ããããã¹ãŠã®å Žæã¯ä¿®æ£ãå¿
èŠã§ãã
- V530颿° 'left'ã®æ»ãå€ã䜿çšããå¿
èŠããããŸãã tfarmserver.cpp 569
- V530颿°ãftellãã®æ»ãå€ã䜿çšããå¿
èŠããããŸãã tiio_bmp.cpp 804
- V530颿°ãaccumulateãã®æ»ãå€ã䜿çšããå¿
èŠããããŸãã bendertool.cpp 374
V614æªåæåã€ãã¬ãŒã¿ãŒ 'it1'ã䜿çšãããŸããã fxcommand.cpp 2096
QString DeleteLinksUndo::getHistoryString() { .... std::list<TFxP>::const_iterator it1;
æååæäœã¯ãåæåãããŠããªãã€ãã¬ãŒã¿
it1ã䜿çšããŸãã ã»ãšãã©ã®å Žåã1ã€ã®å Žæã§ã
ftã€ãã¬ãŒã¿ã«çœ®ãæããã®ãå¿ããŠããŸããã
V642 ã_wcsicmpã颿°ã®çµæããcharãå倿°å
ã«ä¿åããããšã¯äžé©åã§ãã ããã°ã©ã ã®ããžãã¯ãå£ããŠãéèŠãªãããã倱ãããå¯èœæ§ããããŸãã tfilepath.cpp 328
bool TFilePath::operator<(const TFilePath &fp) const { .... char differ; differ = _wcsicmp(iName.c_str(), jName.c_str()); if (differ != 0) return differ < 0 ? true : false; .... }
_wcsicmp颿°ã¯ã
intåã®æ¬¡ã®å€ãè¿ããŸãã
- <0- string1ããstring2æªæºã
- 0- string2ã¯string2ãšåãã§ãã
- > 0- string2ã¯string2ãã倧ããã
泚æããŠãã ããã ã> 0ãã¯ä»»æã®æ°å€ãæå³ãã1ã§ã¯ãããŸããããããã®æ°å€ã¯ã2ã3ã100ã256ã1024ã5555ãªã©ã§ãã
_wcsicmp颿°ã®çµæã¯ãcharåã®å€æ°ã«é©åããªãå ŽåããããŸãããã®ãããæ¯èŒæŒç®åã¯äºæããªãçµæãè¿ããŸãã
V643ç°åžžãªãã€ã³ã¿ãŒæŒç®ïŒ "\\" + v [i]ã ãcharãã¿ã€ãã®å€ãæååãã€ã³ã¿ãŒã«è¿œå ãããŠããŸãã tstream.cpp 31
string escape(string v) { int i = 0; for (;;) { i = v.find_first_of("\\\'\"", i); if (i == (int)string::npos) break; string h = "\\" + v[i];
ã¢ãã©ã€ã¶ãŒã¯ãæå宿°ãæååãªãã©ã«ã«è¿œå ããããšã«é¢é£ãããšã©ãŒãæ€åºããŸããã æååã«æåã远å ãããããšãäºæãããŠããŸããããæååãã€ã³ã¿ã«æ°å€ã远å ããããããæååãªãã©ã«ãçµäºããäºæããªãçµæãçããŸãã
ããæç¢ºã«ããããã«ããã®ã³ãŒããšåçã®ãã®ã次ã«ç€ºããŸãã
const char *p1 = "\\"; const int delta = v[i]; const char *p2 = *p1 + delta; string h = p2;
ã³ãŒãã®æ£ããããŒãžã§ã³ïŒ
string h = string("\\") + v[i];
V655ã¹ããªã³ã°ã¯é£çµãããŸãããã䜿çšãããŸããã ããšã€ãªã¢ã¹+ "]"ãåŒã®æ€æ»ãæ€èšããŠãã ããã plasticdeformerfx.cpp 150
string PlasticDeformerFx::getAlias(....) const { std::string alias(getFxType()); alias += "["; .... if (sd) alias += ", "+toString(sd, meshColumnObj->paramsTime(frame)); alias + "]";
ã¢ãã©ã€ã¶ãŒã¯ãçµæã䜿çšãããŠããªãåŒãæ€åºããŸããã æãå¯èœæ§ãé«ãã®ã¯ãæŒç®åã+ãã誀ã£ãŠã+ =ãã§ã¯ãªããã®é¢æ°ã«èšè¿°ãããŠããããšã§ãã ãã®çµæãããã°ã©ããèšç»ããããã«ãæ«å°Ÿã®è§æ¬åŒ§ã¯
ãšã€ãªã¢ã¹è¡ã«è¿œå ãããŸããã
ç¡å¹ãªäŸå€
V596ãªããžã§ã¯ãã¯äœæãããŸãããã䜿çšãããŠããŸããã ãthrowãããŒã¯ãŒããæ¬ èœããŠããå¯èœæ§ããããŸãïŒthrow domain_errorïŒFOOïŒ; pluginhost.cpp 1486
void Loader::doLoad(const QString &file) { .... int ret = pi->ini_(host); if (ret) { delete host; std::domain_error("failed initialized: error on ...."); } .... }
颿°ã§ã¯ã
throwããŒã¯ãŒãã¯èª€ã£ãŠå¿ããããŸãã çµæ-ãã®ã³ãŒãã¯ããšã©ãŒã®å Žåã«äŸå€ãã¹ããŒããŸããã ã³ãŒãã®ä¿®æ£ããŒãžã§ã³ïŒ
throw std::domain_error("failed initialized: error on ....");
V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã iocommand.cpp 1620
bool IoCmd::saveLevel(....) { .... try { sl->save(fp, TFilePath(), overwritePalette); } catch (TSystemException se) {
ã¢ãã©ã€ã¶ãŒã¯ãå€ã«ããäŸå€ã®ãã£ããã«é¢é£ããæœåšçãªãšã©ãŒãæ€åºããŸããã ã€ãŸããã³ããŒã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããŠã
TSystemExceptionåã®æ°ãã
seãªããžã§ã¯ããæ§ç¯ãããŸãã ããã«ããã
TSystemExceptionããç¶æ¿ããã¯ã©ã¹ã«ä¿åãããäŸå€æ
å ±ã®äžéšã倱ãã
ãŸã ã
åæ§ã®äžå¯©ãªå ŽæïŒ
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã iocommand.cpp 2650
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã projectpopup.cpp 522
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã projectpopup.cpp 537
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã projectpopup.cpp 635
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã tlevel_io.cpp 130
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã calligraph.cpp 161
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã calligraph.cpp 165
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã patternmap.cpp 210
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã patternmap.cpp 214
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã patternmap.cpp 218
- V746ã¿ã€ãã®ã¹ã©ã€ã¹ã äŸå€ã¯ãå€ã§ã¯ãªãåç
§ã«ãã£ãŠãã£ããããå¿
èŠããããŸãã scriptbinding_level.cpp 221
ç¡å¹ãªæ¡ä»¶
V547åŒ 'ïŒintïŒstartOutPoints.sizeïŒïŒïŒ
2ïŒ= 2'ã¯åžžã«trueã§ãã rasterselection.cpp 852
TStroke getIntersectedStroke(TStroke &stroke, TRectD bbox) { .... for (t = 0; t < (int)outPoints.size(); t++) addPointToVector(...., (int)startOutPoints.size() % 2 != 2); .... }
è峿·±ãééãã æãå¯èœæ§ãé«ãã®ã¯ã
ãµã€ãºïŒïŒã®å€
ãå¶æ°ã奿°ãã倿ããããšãèšç»ããããšã§ãã ãããã£ãŠã2ã§å²ã£ãäœãã¯ãŒããšæ¯èŒããå¿
èŠããããŸãã
V502ãããããã?:ãæŒç®åã¯äºæ³ãšã¯ç°ãªãæ¹æ³ã§åäœããŸãã ãïŒïŒãæŒç®åã¯ãã+ãæŒç®åãããåªå
床ãäœããªããŸãã igs_motion_wind_pixel.cpp 127
void rgb_to_lightness_( const double re, const double gr, const double bl, double &li) { li=((re < gr) ? ((gr < bl) ? bl : gr) : ((re < bl) ? bl : re) + (gr < re) ? ((bl < gr) ? bl : gr) : ((bl < re) ? bl : re)) / 2.0; }
ãã®ã³ãŒããã©ã°ã¡ã³ãã§ã¯ãäžé
æŒç®åãïŒïŒãã®åªå
床ã«é¢é£ãããšã©ãŒãçºçããŸããã ãã®åªå
é äœã¯ãå ç®æŒç®åã®åªå
é äœãããäœããªã£ãŠããŸãã ãã®çµæãæ¡ä»¶
ïŒre <grïŒã falseã®å Žåãããã«èšç®ãæ£ããå®è¡ãããŸãããå®éã®å€æ°ã¯è«ççãªãã®ãšå ç®ããå§ããŸãã
è€æ°ã®äžé
æŒç®åãäžç·ã«äœ¿çšããªãã§ãã ãã-ããã¯ãã³ãŒãã«ãšã©ãŒã远å ããæçã®æ¹æ³ã§ãã
V590 'state ==ïŒ-3ïŒ||ã®æ€æ»ãæ€èšãã stateïŒ= 0 'åŒã 衚çŸãéå°ã§ãããã誀æ€ãå«ãŸããŠããŸãã psdutils.cpp 174
int psdUnzipWithoutPrediction(....) { .... do { state = inflate(&stream, Z_PARTIAL_FLUSH); if (state == Z_STREAM_END) break; if (state == Z_DATA_ERROR || state != Z_OK)
ç¢å°ã§ããŒã¯ãããæ¡ä»¶ã¯ãéšååŒãstate == Z_DATA_ERRORãã®çµæã«äŸåããŸããã ããã¯ãæ¡ä»¶åŒå
šäœã®ççå€è¡šãäœæãããšç°¡åã«ç¢ºèªã§ããŸãã
ã³ããŒã¢ã³ãããŒã¹ãããã°ã©ãã³ã°
V517 ãifïŒAïŒ{...} else ifïŒAïŒ{...}ããã¿ãŒã³ã®äœ¿çšãæ€åºãããŸããã è«çãšã©ãŒãååšããå¯èœæ§ããããŸãã è¡ã確èªããŠãã ããïŒ1448ã1454ãtcenterlineskeletonizer.cpp 1448
inline void Event::processVertexEvent() { .... if (newLeftNode->m_concave) {
æ¡ä»¶å
ã®å€æ°
newLeftNodeãš
newRightNodeã¯ãããã§æ··åãããŸãã ãã®ãããªãšã©ãŒã®çµæãšããŠã
elseãã©ã³ãã¯å®è¡ãããŸããã ãããããæ¡ä»¶ã®1ã€ã¯
ifïŒnewRightNode-> m_concaveïŒã®ããã«ãªããŸãã
V501 ã||ãã®å·Šãšå³ã«åäžã®ãµãåŒããããŸã æŒç®åïŒm_cutLx || m_cutLx canvassizepopup.cpp 271
bool m_cutLx, m_cutLy; void PeggingWidget::on00() { .... m_11->setIcon(...).rotate(m_cutLx || m_cutLx ? -90 : 90),....)); .... }
ã³ãŒãã«ã¯ã
m_cutLxãš
m_cutLyã® 2ã€ã®è«ç倿°ãå«ãŸããŠããŸããããããã¯æåŸã®1æåã ãç°ãªããŸãã äžèšã®äŸã§ã¯ãåã倿°
m_cutLxã䜿çšããŠããŸãã ããããããããã®1ã€ã§ã¿ã€ããã¹ãè¡ãããŸããã
V501 ã||ãã®å·ŠåŽãšå³åŽã«åäžã®ãµãåŒãparentTask-> m_status == AbortedãããããŸãã æŒç®åã tfarmcontroller.cpp 1857
void FarmController::taskSubmissionError(....) { .... if (parentTask->m_status == Aborted ||
ã¢ãã©ã€ã¶ãŒã¯ã
Aborted宿°ãšã®2ã€ã®åäžã®æ¯èŒãèŠã€ããŸããã ãã¡ã€ã«ãæ€çŽ¢ããåŸããã®ãã¡ã€ã«ã®è¡2028ã§ãåäžã®ã³ãŒããããã¯ãèŠã€ããŸããããæ¬¡ã®æ¡ä»¶ããããŸãã
if (parentTask->m_status == Completed || parentTask->m_status == Aborted) {
ã»ãšãã©ã®å Žåããã®å Žæã§ã¯æ¡ä»¶åŒã¯äŒŒãŠããã¯ãã§ãã
V501 ã||ãã®å·Šãšå³ã«åäžã®å¯æ¬¡åŒãcornerCoords.y> upperBoundãããããŸãã æŒç®åã tellipticbrush.cpp 1020
template <typename T> void tellipticbrush::OutlineBuilder::addMiterSideCaps(....) { .... if (cornerCoords == TConsts::napd || cornerCoords.x < lowerBound || cornerCoords.y > upperBound || cornerCoords.y < lowerBound || cornerCoords.y > upperBound) { .... } .... }
次ã«ãããã°ã©ããŒã¯
xã®ä»£ããã«
yã䜿çšããŠå°ããªã¿ã€ããã¹ãè¡ããŸããã
ã³ããŒããŒã¹ãããã°ã©ãã³ã°ã®çµæãšããŠçºçãã6ã€ã®ãšã©ãŒã«ã€ããŠã¯èª¬æããŸãããããªã¹ãã瀺ããŸãã ãããã®å Žæã¯ãéçºè
ã確èªããå¿
èŠããããŸãã
- V501 '||'ã®å·Šãšå³ã«åããµãåŒ 's.m_repoStatus == "modified"'ããããŸãã æŒç®åã svnupdatedialog.cpp 210
- V501ã||ãã®å·ŠåŽãšå³åŽã«åäžã®å¯æ¬¡åŒãm_lineEdit-> hasFocusïŒïŒãããããŸãã æŒç®åã framenavigator.cpp 44
- V517ãifïŒAïŒ{...} else ifïŒAïŒ{...}ããã¿ãŒã³ã®äœ¿çšãæ€åºãããŸããã è«çãšã©ãŒãååšããå¯èœæ§ããããŸãã è¡ã確èªããŠãã ããïŒ750ã825ãtpalette.cpp 750
- V517ãifïŒAïŒ{...} else ifïŒAïŒ{...}ããã¿ãŒã³ã®äœ¿çšãæ€åºãããŸããã è«çãšã©ãŒãååšããå¯èœæ§ããããŸãã è¡ã確èªïŒ123ã126ãigs_density.cpp 123
- V523ãthenãã¹ããŒãã¡ã³ãã¯ãelseãã¹ããŒãã¡ã³ããšåçã§ãã typetool.cpp 813
- V583ãïŒïŒãæŒç®åã¯ããã®æ¡ä»¶åŒã«é¢ä¿ãªããåžžã«1ã€ã®åãå€ãè¿ããŸãïŒã³ã³ãã tgrammar.cpp 731
ãã®ä»ã®ãšã©ãŒ
V665ããããããã®ã³ã³ããã¹ãã§ã¯ã#pragma warningïŒdefaultïŒXïŒãã®äœ¿çšæ³ãæ£ãããããŸããã 代ããã«ã#pragma warningïŒpush / popïŒãã䜿çšããå¿
èŠããããŸãã è¡ã確èªïŒ20ã205ãtspectrum.h 205
#ifdef WIN32 #pragma warning(disable : 4251) #endif .... #ifdef WIN32 #pragma warning(default : 4251) #endif
ãããã³ã³ãã€ã©èŠåããªãã«ããæ¹æ³ã§ããããã«ããããããããã®ãããžã§ã¯ãã§ã¯æ³šæãæã£ãŠããŸãã ãšã©ãŒã¯ã
ïŒpragma warningïŒããã©ã«ãïŒXïŒãã£ã¬ã¯ãã£ãã«èŠåãå«ãŸããŠããªããããããããã©ã«ãç¶æ
ã«èšå®ããããšã§ããããã¯ããã°ã©ããŒãæåŸ
ãããã®ã§ã¯ãªãå ŽåããããŸãã
ã³ãŒãã®ä¿®æ£ããŒãžã§ã³ïŒ
#ifdef WIN32 #pragma warning(push) #pragma warning(disable : 4251) #endif .... #ifdef WIN32 #pragma warning(pop) #endif
V546ã¯ã©ã¹ã®ã¡ã³ããŒã¯ããèªäœã§åæåãããŸãïŒ 'm_subIdïŒm_subIdïŒ'ã tfarmcontroller.cpp 572
class TaskId { int m_id; int m_subId; public: TaskId(int id, int subId = -1) : m_id(id), m_subId(m_subId){};
ã¯ã©ã¹åæåãªã¹ãã®è峿·±ããšã©ãŒã
m_subldãã£ãŒã«ã
ã¯ããèªäœã§åæåãããŸããããããã
m_subIdïŒsubIdïŒãæžããããš
æãã§ãããã
V557é
åã®ãªãŒããŒã©ã³ãå¯èœã§ãã ã9ãã€ã³ããã¯ã¹ã¯é
åã®å¢çãè¶
ããŠããŸãã tconvolve.cpp 123
template <class PIXOUT> void doConvolve_cm32_row_9_i(....) { TPixel32 val[9];
誰ãã1ã9ã®ã€ã³ããã¯ã¹ã§9ã€ã®èŠçŽ ãããªã
valé
åã«ã¢ã¯ã»ã¹ãã倧ããªã³ãŒã
ã0ã8ã®ã€ã³ããã¯ã¹ã§é
åã«æ£ããã¢ã¯ã»ã¹ããã«ãŒããè¿ãã«ãããŸãã
V556ç°ãªãåæåã®å€ãæ¯èŒãããŸãïŒm_actionïŒ= EDIT_SEGMENTã ã¿ã€ãïŒã¢ã¯ã·ã§ã³ãCursorTypeã controlpointeditortool.cpp 257
enum Action { NONE, RECT_SELECTION, CP_MOVEMENT, SEGMENT_MOVEMENT, IN_SPEED_MOVEMENT, OUT_SPEED_MOVEMENT }; enum CursorType { NORMAL, ADD, EDIT_SPEED, EDIT_SEGMENT, NO_ACTIVE }; void ControlPointEditorTool::drawMovingSegment() { int beforeIndex = m_moveSegmentLimitation.first; int nextIndex = m_moveSegmentLimitation.second; if (m_action != EDIT_SEGMENT ||
ã¢ãã©ã€ã¶ãŒã¯ãç°ãªãã¿ã€ãã®åæå€ã®æ¯èŒãæ€åºããŸããã ã³ãŒãæ€çŽ¢ã䜿çšããŠãã¯ã©ã¹
m_actionã®ãã£ãŒã«ããæ£ããåã§åæåããããã®å Žæã§å¥ã®åã®å®æ°ãšæ¯èŒãããããšãããããŸããã
ãããã«
ãã§ã«è¿°ã¹ãããã«ãOpenToonzãããžã§ã¯ãã¯éçã³ãŒãã¢ãã©ã€ã¶ãŒã«ãšã£ãŠå€©ã®æµã¿ã§ãããã®ãããªå°ããªãããžã§ã¯ãã«ã¯å€ãã®é倧ãªãšã©ãŒãå«ãŸããŠããŸãã ãã®èšäºã«ã¯ããã¹ãŠã®ã¢ãã©ã€ã¶ãŒã¡ãã»ãŒãžãå«ãŸããŠããã ãã§ãªãããã®æ°ãå€ãããã«å€ãã®è峿·±ãæ·±å»ãªèŠåãå«ãŸããŠããŸããã§ããã ãã¡ãããéçºè
ãã©ãŒã©ã ã®ãã§ãã¯ã«ã€ããŠæžããŠãããŸãã ããããã圌ãã¯ã³ãŒãã®åè³ªãæ¹åããããšã«èå³ãããã§ãããã
ãœãããŠã§ã¢è£œåUniversal Scene DescriptionïŒUSDïŒã®ã³ãŒããéãæå³ããPixarã«ãã£ãŠçºè¡šãããŸããã ãã®ã€ãã³ããæ¥œãã¿ã«ããŠããŸãã
C / C ++ / CïŒãããžã§ã¯ãã§
PVS-Studioã詊ããŠã¿ãããšããå§ãããŸãã ã¢ãã©ã€ã¶ãŒã¯Windowsç°å¢ã§å®è¡ãããããŸããŸãªãã«ãã·ã¹ãã ããµããŒãããŸãã
è±èªã話ãèŽè¡ãšãã®èšäºãå
±æãããå Žåã¯ã翻蚳ãžã®ãªã³ã¯ã䜿çšããŠãã ããïŒSvyatoslav Razmyslovã
Toonzã®ã³ãŒãã«ã¯å€ãã®èŠæãæ®ãããŠããŸã ã