Ошибки, обнаруженные в Open Source проектах разработчиками PVS-Studio с помощью статического анализа

Мы регулярно проверяем различные open-source проекты с помощью PVS-Studio. Результаты проверки мы отправляем разработчикам и, как правило, описываем в статье. Помимо этого, мы пополняем базу примеров ошибок. Именно она и представлена ниже на этой странице.

Ошибки разделены по номеру диагностического сообщения, с помощью которого они были найдены. В правом столбце приводится ссылка на соответствующие примеры ошибок.

Мы специально не стали делать возможность посмотреть все ошибки, найденные в конкретном проекте. Это даст неправильное впечатление о количестве ошибок в проекте и возможностях анализатора. Анализатор быстро развивается. Если он нашёл 10 ошибок в проекте год назад, вовсе не означает, что он найдет столько же ошибок и сейчас. Сравните для примера отчеты о проверке ReactOS: первый отчет, второй отчет (прошло полтора года).

Вы можете предложить нам для проверки другие open-source проекты. Типы проектов, которые умеет проверять PVS-Studio, приведены в описании инструмента.

Эта база может послужить уникальным материалом для размышлений о разработке стандартов кодирования, написания статей о правилах программирования и помочь в других исследованиях связанных с повышением надежности программного обеспечения. Желаем интересных исследований.

Код ошибки Название ошибки Список проектов
V501 There are identical sub-expressions to the left and to the right of the 'foo' operator.
ADAPTIVE Communication Environment (ACE), Apache HTTP Server, AssaultCube Reloaded, Audacity, Blender, Boost (C++ libraries), Chromium, Clang, Coin3D, Crash Server Library, CryEngine 3 SDK, Crystal Space 3D SDK, ...
V502 Perhaps the '?:' operator works in a different way than it was expected. The '?:' operator has a lower priority than the 'foo' operator.
Apache Xerces Project, Chromium, FCEUX, Grid Control Re-dux, IPP Samples, MongoDB, Newton Game Dynamics, OTS, ReactOS, TinyCAD, Unreal Engine 4.
V503 This is a nonsensical comparison: pointer < 0.
Chromium, IPP Samples, OGDF, Scilab, Xpdf.
V505 The 'alloca' function is used inside the loop. This can quickly overflow stack.
Crystal Space 3D SDK, DeSmuME, Multi-threaded Dynamic Queue, Pixie, Synergy.
V506 Pointer to local variable 'X' is stored outside the scope of this variable. Such a pointer will become invalid.
WinSCP.
V507 Pointer to local array 'X' is stored outside the scope of this array. Such a pointer will become invalid.
MySQL, Pixie, Scilab, Source Engine SDK, TortoiseSVN.
V509 The 'throw' operator inside the destructor should be placed within the try..catch block. Raising exception inside the destructor is illegal.
Chromium, Data Distribution Service, FlightGear, Geant4 software, NetXMS, OGRE, Protocol Buffers, Source Engine SDK, TortoiseGit, TortoiseSVN, WebRTC.
V510 The 'Foo' function is not expected to receive class-type variable as 'N' actual argument.
C++ Embedded Web Server, Chromium, Quake-III-Arena, SMTP Client, Scilab, TortoiseSVN, Unreal Engine 4, Wild Magic 5, WinMerge.
V511 The sizeof() operator returns size of the pointer, and not of the array, in given expression.
Chromium, Intel AMT SDK, MySQL, ReactOS, Samba, Shareaza, Source Engine SDK, Wolfenstein 3D.
V512 A call of the 'Foo' function will lead to a buffer overflow or underflow.
ADAPTIVE Communication Environment (ACE), Apache HTTP Server, Chromium, DeSmuME, Doom 3, Energy Checker SDK, FCEUX, Far Manager, Fennec Media, FlightGear, Game_Music_Emu library, IPP Samples, ...
V513 Use _beginthreadex/_endthreadex functions instead of CreateThread/ExitThread functions.
Multi Theft Auto, PostgreSQL Database Management System, SeqAn, Snes9x, Source Engine SDK, Tesseract, Trans-Proteomic Pipeline.
V514 Dividing sizeof a pointer by another value. There is a probability of logical error presence.
Miranda IM, Notepad++, OpenCOLLADA, OpenMS, ReactOS, Scilab.
V516 Consider inspecting an odd expression. Non-null function pointer is compared to null.
Audacity, Micro-Manager.
V517 The use of 'if (A) {...} else if (A) {...}' pattern was detected. There is a probability of logical error presence.
Chromium, CryEngine 3 SDK, Doom 3, EIB Suite, FFmpeg, Geant4 software, ICU, Libwebpdecode, MAME, Micro-Manager, Notepad++, Qt, ...
V518 The 'malloc' function allocates strange amount of memory calculated by 'strlen(expr)'. Perhaps the correct variant is strlen(expr) + 1.
FCEUX.
V519 The 'x' variable is assigned values twice successively. Perhaps this is a mistake.
CMake, Clang, CryEngine 3 SDK, Crystal Space 3D SDK, D programming language, Data Distribution Service, Doom 3, EA WebKit, Fireflies, Geant4 software, ICU, IPP Samples, ...
V520 The comma operator ',' in array index expression.
G3D Content Pak.
V521 Such expressions using the ',' operator are dangerous. Make sure the expression is correct.
CryEngine 3 SDK, G3D Content Pak, IPP Samples, Lugaru, OpenSSL, Quake-III-Arena, Trans-Proteomic Pipeline, Visualization Toolkit (VTK).
V522 Dereferencing of the null pointer might take place.
Blender, Chromium, Clang, D programming language, Data Distribution Service, GeoLib, Multi Theft Auto, NetXMS, PCSX2, Qt, ReactOS, Scilab, ...
V523 The 'then' statement is equivalent to the 'else' statement.
ADAPTIVE Communication Environment (ACE), Blender, Clang, CryEngine 3 SDK, FlightGear, IPP Samples, MAME, Micro-Manager, Multi Theft Auto, Multi-threaded Dynamic Queue, Notepad++, OpenMS, ...
V524 It is odd that the body of 'Foo_1' function is fully equivalent to the body of 'Foo_2' function.
Blender, Chromium, Clang, Geant4 software, MAME, Nmap Security Scanner, OpenCV, OpenMW, SeqAn, TortoiseSVN, Trans-Proteomic Pipeline.
V525 The code containing the collection of similar blocks. Check items X, Y, Z, ... in lines N1, N2, N3, ...
Fennec Media, Miranda IM, MySQL, Notepad++, Scilab, SeqAn, SlimDX, Source Engine SDK, Trans-Proteomic Pipeline, Win32++.
V526 The 'strcmp' function returns 0 if corresponding strings are equal. Consider examining the condition for mistakes.
Micro-Manager, Network Security Services (NSS), PostgreSQL Database Management System, wxWidgets.
V527 It is odd that the 'zero' value is assigned to pointer. Probably meant: *ptr = zero.
Apache HTTP Server, PNG library, ReactOS, Scilab, Trans-Proteomic Pipeline.
V528 It is odd that pointer is compared with the 'zero' value. Probably meant: *ptr != zero.
Apache HTTP Server, CxImage, Doom 3, Fennec Media, Miranda IM, Mozilla Firefox, Notepad++, OpenCV, Scilab, Snes9x, TortoiseGit, Trans-Proteomic Pipeline, ...
V529 Odd semicolon ';' after 'if/for/while' operator.
CamStudio, Fennec Media, Multi-threaded Dynamic Queue, QuickThread, ReactOS, VirtualDub, Windows 8 Driver Samples, Xpdf.
V530 The return value of function 'Foo' is required to be utilized.
Battle for Wesnoth, Chromium, EchoVNC, Firebird, IPP Samples, Intel AMT SDK, Micro-Manager, MongoDB, Multi Theft Auto, Nmap Security Scanner, Qt, QuantLib, ...
V531 It is odd that a sizeof() operator is multiplied by sizeof().
CrashRpt library, NetDefender Firewall, ReactOS, XUIFramework.
V532 Consider inspecting the statement of '*pointer++' pattern. Probably meant: '(*pointer)++'.
Apache HTTP Server, DeSmuME, FCEUX, IPP Samples, OpenSSL, eMule Plus.
V533 It is likely that a wrong variable is being incremented inside the 'for' operator. Consider reviewing 'X'.
Doom 3.
V534 It is likely that a wrong variable is being compared inside the 'for' operator. Consider reviewing 'X'.
Coin3D, Source Engine SDK.
V535 The variable 'X' is being used for this loop and for the outer loop.
Doom 3, IPP Samples, Lugaru, OGRE, Visualization Toolkit (VTK).
V536 Be advised that the utilized constant value is represented by an octal form.
Chromium, Micro-Manager, Miranda IM, PostgreSQL Database Management System, TortoiseGit, eLynx Image Processing SDK and Lab.
V537 Consider reviewing the correctness of 'X' item's usage.
Blender, IPP Samples, Miranda IM, Quake-III-Arena, ReactOS, Source Engine SDK, Trinity Core.
V540 Member 'x' should point to string terminated by two 0 characters.
Chromium, Fennec Media, WinSCP.
V541 It is dangerous to print the string into itself.
CAMEL, Mozilla Firefox, PCSX2, Scilab, TinyCAD, UCSniff.
V542 Consider inspecting an odd type cast: 'Type1' to ' Type2'.
Miranda IM.
V543 It is odd that value 'X' is assigned to the variable 'Y' of HRESULT type.
WinMerge.
V545 Such conditional expression of 'if' operator is incorrect for the HRESULT type value 'Foo'. The SUCCEEDED or FAILED macro should be used instead.
Qt, VirtualDub.
V546 Member of a class is initialized by itself: 'Foo(Foo)'.
Boost (C++ libraries).
V547 Expression is always true/false.
ADAPTIVE Communication Environment (ACE), Apache HTTP Server, BCmenu, Boost (C++ libraries), CLucene, CamStudio, Chromium, CrashRpt library, CryEngine 3 SDK, DOSBox, DeSmuME, FCEUX, ...
V549 The 'first' argument of 'Foo' function is equal to the 'second' argument.
Chromium, CryEngine 3 SDK, Micro-Manager, Open Metronome, ReactOS.
V550 An odd precise comparison. It's probably better to use a comparison with defined precision: fabs(A - B) < Epsilon or fabs(A - B) > Epsilon.
CAMEL, ffdshow.
V554 Incorrect use of smart pointer.
Boost (C++ libraries), Chromium.
V555 The expression of the 'A - B > 0' kind will work as 'A != B'.
OpenSSL, Scilab, Trans-Proteomic Pipeline.
V556 The values of different enum types are compared.
Clang, Source Engine SDK, TortoiseGit, Unreal Engine 4, Windows 8 Driver Samples, XUIFramework.
V557 Array overrun is possible.
Blender, CAMEL, CMake, Chromium, Coin3D, Doom 3, Dynamic Universal Music Bibliotheque, Energy Checker SDK, FFmpeg, FlightGear, Geant4 software, IPP Samples, ...
V558 Function returns the pointer/reference to temporary local object.
Geant4 software, SeqAn, VirtualDub.
V559 Suspicious assignment inside the condition expression of 'if/while/for' operator.
Data Distribution Service, Intel AMT SDK, Miranda IM, Scilab.
V560 A part of conditional expression is always true/false.
Apache HTTP Server, CxImage, DeSmuME, Fireflies, LibRaw, Lugaru, Miranda IM, MongoDB, Multi Theft Auto, NetDefender Firewall, Notepad++, OGDF, ...
V561 It's probably better to assign value to 'foo' variable than to declare it anew.
FCEUX, FlightGear, Unreal Engine 4, Vscap.
V562 It's odd to compare a bool type value with a value of N.
Blender, ReactOS, Spvolren, Windows 8 Driver Samples.
V563 It is possible that this 'else' branch must apply to the previous 'if' statement.
BCmenu, PeerBlock, Squirrel, Trans-Proteomic Pipeline.
V564 The '&' or '|' operator is applied to bool type value. You've probably forgotten to include parentheses or intended to use the '&&' or '||' operator.
Battle for Wesnoth, Blender, Chromium, DOSBox, Doom 3, FCEUX, FFmpeg, MySQL, Network Security Services (NSS), OpenMW, Unreal Engine 4, Wolfenstein 3D, ...
V565 An empty exception handler. Silent suppression of exceptions can hide the presence of bugs in source code during testing.
G3D Content Pak.
V567 Undefined behavior. The variable is modified while being used twice between sequence points.
AssaultCube Reloaded, Chromium, CryEngine 3 SDK, Doom 3, Fennec Media, IPP Samples, Miranda IM, Network Security Services (NSS), Rhino (JavaScript engine), SAGA GIS, Scilab, Snes9x, ...
V568 It's odd that the argument of sizeof() operator is the expression.
Apache HTTP Server, CxImage, Energy Checker SDK, FCEUX, Miranda IM, OpenCV, ReactOS, Wolfenstein 3D.
V570 The variable is assigned to itself.
Chromium, Coin3D, CryEngine 3 SDK, OpenCV, Qt, Quake-III-Arena, ReactOS, TortoiseGit, Unreal Engine 4, VirtualDub.
V571 Recurring check. This condition was already verified in previous line.
Blender, CryEngine 3 SDK, Energy Checker SDK, IPP Samples, Micro-Manager, Multi Theft Auto, Notepad++, Qt, SeqAn, Unreal Engine 4.
V572 It is odd that the object which was created using 'new' operator is immediately casted to another type.
wxWidgets.
V573 Uninitialized variable 'Foo' was used. The variable was used to initialize itself.
Firebird, Multi Theft Auto, Word for Windows 1.1a.
V575 Function receives an odd argument.
Doom 3, Fennec Media, Firebird, G3D Content Pak, Miranda IM, Mozilla Firefox, Multi Theft Auto, ReactOS, Scilab, WinSCP.
V576 Incorrect format. Consider checking the N actual argument of the 'Foo' function.
Apache Xerces Project, Cairo, CamStudio, Chromium, Coin3D, CryEngine 3 SDK, DeSmuME, Doom 3, Energy Checker SDK, Far Manager, FlightGear, GNU C Library, ...
V578 An odd bitwise operation detected. Consider verifying it.
NetXMS.
V579 The 'Foo' function receives the pointer and its size as arguments. It is possibly a mistake. Inspect the N argument.
ADAPTIVE Communication Environment (ACE), APR, Apache HTTP Server, Blender, CamStudio, Chromium, Dolphin Emulator, Doom 3, Far Manager, Firebird, MAME, Mozilla Firefox, ...
V581 The conditional expressions of the 'if' operators situated alongside each other are identical.
Chromium, MongoDB, WebM.
V583 The '?:' operator, regardless of its conditional expression, always returns one and the same value.
MAME, Scilab.
V584 The same value is present on both sides of the operator. The expression is incorrect or it can be simplified.
Far Manager.
V586 The 'Foo' function is called twice for deallocation of the same resource.
Blender, OpenMW.
V587 An odd sequence of assignments of this kind: A = B; B = A;.
Mozilla Firefox, Windows 8 Driver Samples.
V588 The expression of the 'A =+ B' kind is utilized. Consider reviewing it, as it is possible that 'A += B' was meant.
Libxml2, Trans-Proteomic Pipeline.
V590 Consider inspecting this expression. The expression is excessive or contains a misprint.
FCEUX, GNU C Library, ICU, Notepad++, ReactOS, Stickies, Tesseract.
V591 Non-void function should return a value.
Quake-III-Arena.
V592 The expression was enclosed by parentheses twice: ((expression)). One pair of parentheses is unnecessary or misprint is present.
wxWidgets.
V593 Consider reviewing the expression of the 'A = B == C' kind. The expression is calculated as following: 'A = (B == C)'.
FFmpeg, LibRaw, Mozilla Firefox, Opus, PuTTY, Qt, ReactOS, TortoiseGit, Vscap.
V594 The pointer steps out of array's bounds.
ReactOS.
V595 The pointer was utilized before it was verified against nullptr.
ADAPTIVE Communication Environment (ACE), ANGLE, Apache Xerces Project, Blender, Chromium, Clang, Coin3D, CryEngine 3 SDK, Data Distribution Service, Doom 3, EchoVNC, FFmpeg, ...
V596 The object was created but it is not being used. The 'throw' keyword could be missing.
FlightGear, Geant4 software, Multi Theft Auto, OpenMS, OpenMW.
V597 The compiler could delete the 'memset' function call, which is used to flush 'Foo' buffer. The RtlSecureZeroMemory() function should be used to erase the private data.
APR, Apache HTTP Server, CamStudio, Crypto++, Dolphin Emulator, GNU C Library, NetXMS, Network Security Services (NSS), POCO C++ Libraries, PostgreSQL Database Management System, Qt, Samba, ...
V598 The 'memset/memcpy' function is used to nullify/copy the fields of 'Foo' class. Virtual method table will be damaged by this.
Coin3D, IPP Samples, Qt, SlimDX.
V599 The virtual destructor is not present, although the 'Foo' class contains virtual functions.
ANGLE, Multi Theft Auto, Source Engine SDK, Synergy, TortoiseGit, Trans-Proteomic Pipeline, VirtualDub, WinMerge, ffdshow.
V600 Consider inspecting the condition. The 'Foo' pointer is always not equal to NULL.
Firebird, Multi Theft Auto, Notepad++, OpenSSL.
V601 An odd implicit type casting.
IPP Samples, Micro-Manager, WebPagetest.
V603 The object was created but it is not being used. If you wish to call constructor, 'this->Foo::Foo(....)' should be used.
Google-Breakpad, OpenCOLLADA, Trans-Proteomic Pipeline, eMule Plus.
V604 It is odd that the number of iterations in the loop equals to the size of the pointer.
Windows 8 Driver Samples.
V605 Consider verifying the expression. An unsigned value is compared to the number -NN.
VirtualDub.
V606 Ownerless token 'Foo'.
RunAsAdmin Explorer Shim, Windows 8 Driver Samples.
V607 Ownerless expression 'Foo'.
Boost (C++ libraries), CryEngine 3 SDK, Eigen, IPP Samples, TortoiseSVN, Trans-Proteomic Pipeline, Unreal Engine 4, Windows 8 Driver Samples.
V610 Undefined behavior. Check the shift operator.
Blender, Chromium, Clang, DeSmuME, FAAC, FFmpeg, Firebird, FlightGear, GNU C Library, Game_Music_Emu library, LibRaw, MAME, ...
V611 The memory allocation and deallocation methods are incompatible.
Apache Xerces Project, CxImage, Miranda IM, Mozilla Firefox, Multi Theft Auto, Newton Game Dynamics, OpenCOLLADA, OpenCV, Skia Graphics Engine, Snes9x, TinyCAD, Trans-Proteomic Pipeline, ...
V612 An unconditional 'break/continue/return/goto' within a loop.
Chromium, Clang, CryEngine 3 SDK, D programming language, Data Distribution Service, Firebird, Geant4 software, NetXMS, OpenCV, PCSX2, Prime95, Qt, ...
V614 Uninitialized variable 'Foo' used.
APR, Apache HTTP Server, Chromium, Embedded SSL Library, FFmpeg, Firebird, GNU C Library, Geant4 software, IPP Samples, MPC-HC, Mozilla Firefox, NetXMS, ...
V616 The 'Foo' named constant with the value of 0 is used in the bitwise operation.
Mozilla Firefox.
V617 Consider inspecting the condition. An argument of the '|' bitwise operation always contains a non-zero value.
ABackup, Multi Theft Auto, OpenSSL, ResizableLib, WebRTC, Word for Windows 1.1a, ffdshow.
V618 It's dangerous to call the 'Foo' function in such a manner, as the line being passed could contain format specification. The example of the safe code: printf(\"%s\", str);
CryEngine 3 SDK, Source Engine SDK, TortoiseSVN, WinSCP.
V620 It's unusual that the expression of sizeof(T)*N kind is being summed with the pointer to T type.
Apache Xerces Project, Snes9x.
V621 Consider inspecting the 'for' operator. It's possible that the loop will be executed incorrectly or won't be executed at all.
Geant4 software, PuTTY, Scilab.
V624 The constant NN is being utilized. The resulting value could be inaccurate. Consider using the M_NN constant from <math.h>.
Geant4 software, OpenMS, ffdshow.
V625 Consider inspecting the 'for' operator. Initial and final values of the iterator are the same.
Synergy.
V627 Consider inspecting the expression. The argument of sizeof() is the macro which expands to a number.
Data Distribution Service, Network Security Services (NSS), Samba, WebRTC.
V628 It's possible that the line was commented out improperly, thus altering the program's operation logics.
Trans-Proteomic Pipeline.
V629 Consider inspecting the expression. Bit shifting of the 32-bit value with a subsequent expansion to the 64-bit type.
Clang, SMHasher, SeqAn, Snes9x, Tesseract, The JUCE Library, Unreal Engine 4, Xpdf.
V631 Consider inspecting the 'Foo' function call. Defining an absolute path to the file or directory is considered a poor style.
NetXMS, VirtualDub, ffdshow.
V635 Consider inspecting the expression. The length should probably be multiplied by the sizeof(wchar_t).
WinMerge.
V636 The expression was implicitly casted from integer type to real type. Consider utilizing an explicit type cast to avoid overflow or loss of a fractional part.
Coin3D, CxImage, Data Distribution Service, FFmpeg, FlightGear, Geant4 software, Micro-Manager, OpenMS, Qt, Source Engine SDK, Tesseract, TinyCAD, ...
V637 Two opposite conditions were encountered. The second condition is always false.
Chromium, OpenCV, TinyCAD, TortoiseGit, Unreal Engine 4, VirtualDub.
V639 Consider inspecting the expression for function call. It is possible that one of the closing ')' brackets was positioned incorrectly.
CryEngine 3 SDK, Eigen.
V640 The code's operational logic does not correspond with its formatting.
Chromium, EA WebKit, FFmpeg, Geant4 software, ReactOS, Windows 8 Driver Samples, XUIFramework, Xpdf.
V642 Saving the function result inside the 'byte' type variable is inappropriate. The significant bits could be lost breaking the program's logic.
Firebird, ReactOS, Xpdf.
V645 The function call could lead to the buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold.
ICU, Multi Theft Auto, ReactOS.
V646 Consider inspecting the application's logic. It's possible that 'else' keyword is missing.
Geant4 software, VirtualDub.
V648 Priority of the '&&' operation is higher than that of the '||' operation.
Wolfenstein 3D.
V649 There are two 'if' statements with identical conditional expressions. The first 'if' statement contains function return. This means that the second 'if' statement is senseless.
Coin3D, Micro-Manager, Miranda IM, RunAsAdmin Explorer Shim, Wolfenstein 3D.
V654 The condition of loop is always true/false.
Apache HTTP Server, WebRTC.
V655 The strings was concatenated but are not utilized. Consider inspecting the expression.
Scilab.
V656 Variables are initialized through the call to the same function. It's probably an error or un-optimized code.
Doom 3, Qt, ReactOS.
V662 Consider inspecting the loop expression. Different containers are utilized for setting up initial and final values of the iterator.
Rhino (JavaScript engine).
V663 Infinite loop is possible. The 'cin.eof()' condition is insufficient to break from the loop. Consider adding the 'cin.fail()' function call to the conditional expression.
OpenMW, POCO C++ Libraries.
V665 Possibly, the usage of '#pragma warning(default: X)' is incorrect in this context. The '#pragma warning(push/pop)' should be used instead.
Chromium, Crash Server Library, Data Distribution Service, Multi Theft Auto, Newton Game Dynamics, PostgreSQL Database Management System, SlimDX, Source Engine SDK, TortoiseGit, TortoiseSVN, Windows 8 Driver Samples.
V666 Consider inspecting NN argument of the function 'Foo'. It is possible that the value does not correspond with the length of a string which was passed with the YY argument.
Geant4 software, OpenSSL, Scilab, Source Engine SDK, Trans-Proteomic Pipeline.
V668 There is no sense in testing the pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error.
ADAPTIVE Communication Environment (ACE), ANGLE, Chromium, CryEngine 3 SDK, FlightGear, Geant4 software, Hunspell, ICU, JavaScriptCore, Multi Theft Auto, NetXMS, OGDF, ...
V669 The argument is a non-constant reference. The analyzer is unable to determine the position at which this argument is being modified. It is possible that the function contains an error.
CryEngine 3 SDK, Micro-Manager, WinMerge.
V670 An uninitialized class member is used to initialize another member. Remember that members are initialized in the order of their declarations inside a class.
Tesseract.
V674 The expression contains a suspicious mix of integer and real types.
FlightGear, Geant4 software, Source Engine SDK.
V676 It is incorrect to compare the variable of BOOL type with TRUE.
CryEngine 3 SDK, Firebird, VirtualDub.
V677 Custom declaration of a standard type. The declaration from system header files should be used instead.
SlimDX.
V678 An object is used as an argument to its own method. Consider checking the first actual argument of the 'Foo' function.
Shareaza.
V684 A value of variable is not modified. Consider inspecting the expression. It is possible that '1' should be present instead of '0'.
V8 JavaScript Engine.