{"id":292632,"date":"2019-07-26T21:00:17","date_gmt":"2019-07-26T21:00:17","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=292632"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=292632","title":{"rendered":"\ufeff\u041b\u0443\u0447\u0448\u0438\u0435 Copy-Paste \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0434\u043b\u044f C \u0438 C++. \u0421\u0431\u043e\u0440\u043d\u0438\u043a \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432 Haiku OS"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u041c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0438 Copy-Paste \u043a\u043e\u0434 \u0441\u0442\u0430\u043b\u0438 \u0442\u0435\u043c\u043e\u0439 \u0434\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043a\u043e\u0434\u0430 Haiku \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c PVS-Studio. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0431\u0443\u0434\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u043c\u0438, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0441 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u043c \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c. \u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u0451\u043d \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/628\/e3b\/d89\/628e3bd8949d3e3155f16a836fc0595c.png\" alt=\"Picture 1\"><\/div>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  <a href=\"https:\/\/www.haiku-os.org\/\">Haiku<\/a> \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0442\u0440\u0443\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0434 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0418\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 LibreOffice \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0439 \u0431\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0438\u0438 R1 Beta 1.<\/p>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430 <a href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/\">PVS-Studio<\/a> \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 2015 \u0433\u043e\u0434\u0430, \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044f \u043e\u0431\u0437\u043e\u0440\u044b \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u0434\u0430. \u042d\u0442\u043e \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 \u0437\u0430 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f. \u0421 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u044d\u0442\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c:<\/p>\n<ol>\n<li><a href=\"https:\/\/www.viva64.com\/ru\/b\/0317\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Haiku (\u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e BeOS). \u0427\u0430\u0441\u0442\u044c 1<\/a>;<\/li>\n<li><a href=\"https:\/\/www.viva64.com\/ru\/b\/0318\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Haiku (\u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e BeOS). \u0427\u0430\u0441\u0442\u044c 2<\/a>;<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/461255\/\">\u041a\u0430\u043a \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0432 \u043d\u043e\u0433\u0443 \u0432 C \u0438 C++. \u0421\u0431\u043e\u0440\u043d\u0438\u043a \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432 Haiku OS<\/a><\/li>\n<\/ol>\n<p>  \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e PVS-Studio \u0434\u043b\u044f Linux. \u0412 2015 \u0435\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043a\u0430\u043a \u0438 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043e\u0442\u0447\u0451\u0442\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043e\u0448\u0438\u0431\u043e\u043a. \u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442 \u0432 \u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<h2>\u041a\u043b\u0430\u0441\u0441\u0438\u043a\u0430 \u0436\u0430\u043d\u0440\u0430<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;-&#8216; operator: (addr_t) b \u2014 (addr_t) b BitmapManager.cpp 51<\/p>\n<pre><code class=\"cpp\">int compare_app_pointer(const ServerApp* a, const ServerApp* b) {   return (addr_t)b - (addr_t)b; }<\/code><\/pre>\n<p>  \u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <i>a <\/i> \u0438 <i>b<\/i>, <i>x <\/i> \u0438 <i>y<\/i>, <i>i <\/i> \u0438 <i>j<\/i>\u2026 \u0438 \u0442.\u0434.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;||&#8217; operator: input == __null || input == __null MediaClient.cpp 182<\/p>\n<pre><code class=\"cpp\">status_t BMediaClient::Unbind(BMediaInput* input, BMediaOutput* output) {   CALLED();    if (input == NULL     || input == NULL)     return B_ERROR;    if (input-&gt;fOwner != this || output-&gt;fOwner != this)     return B_ERROR;    input-&gt;fBind = NULL;   output-&gt;fBind = NULL;   return B_OK; }<\/code><\/pre>\n<p>  \u0412 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>input<\/i>, \u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>output <\/i> \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044e \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>  \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">if (input == NULL     || output == NULL)     return B_ERROR;<\/code><\/pre>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v583\/\">V583<\/a> The &#8216;?:&#8217; operator, regardless of its conditional expression, always returns one and the same value: 500000. usb_modeswitch.cpp 361<\/p>\n<pre><code class=\"cpp\">static status_t my_transfer_data(....) {   ....   do {     bigtime_t timeout = directionIn ? 500000 : 500000;     result = acquire_sem_etc(device-&gt;notify, 1, B_RELATIVE_TIMEOUT, timeout);     ....   } while (result == B_INTERRUPTED);   .... }<\/code><\/pre>\n<p>  \u0422\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0441\u0432\u043e\u0439 \u0441\u043c\u044b\u0441\u043b, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0434\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 <i>500000<\/i>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v519\/\">V519<\/a> The &#8216;m_kindex1&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 40, 41. agg_trans_double_path.cpp 41<\/p>\n<pre><code class=\"cpp\">trans_double_path::trans_double_path() :     m_kindex1(0.0),     m_kindex2(0.0),     m_base_length(0.0),     m_base_height(1.0),     m_status1(initial),     m_status2(initial),     m_preserve_x_scale(true) { }  void trans_double_path::reset() {     m_src_vertices1.remove_all();     m_src_vertices2.remove_all();     m_kindex1 = 0.0;     m_kindex1 = 0.0;     m_status1 = initial;     m_status2 = initial; }<\/code><\/pre>\n<p>  \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>reset <\/i> \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430: \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>m_kindex2<\/i>. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0435 \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u0441\u044f, \u0447\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;&gt;&#8217; operator: fg[order_type::R] &gt; fg[order_type::R] agg_span_image_filter_rgba.h 898<\/p>\n<pre><code class=\"cpp\">typedef Source source_type; typedef typename source_type::color_type color_type; typedef typename source_type::order_type order_type;  void generate(color_type* span, int x, int y, unsigned len) {  ....  if(fg[0] &lt; 0) fg[0] = 0;  if(fg[1] &lt; 0) fg[1] = 0;  if(fg[2] &lt; 0) fg[2] = 0;  if(fg[3] &lt; 0) fg[3] = 0;   if(fg[order_type::A] &gt; base_mask)        fg[order_type::A] = base_mask;  if(fg[order_type::R] &gt; fg[order_type::R])fg[order_type::R] = fg[order_type::R];  if(fg[order_type::G] &gt; fg[order_type::G])fg[order_type::G] = fg[order_type::G];  if(fg[order_type::B] &gt; fg[order_type::B])fg[order_type::B] = fg[order_type::B];   .... }<\/code><\/pre>\n<p>  \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0442\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041d\u0435 \u043c\u043e\u0433\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0443\u0442 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u043e\u0441\u044c. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043c\u0435\u0447\u0443 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u0430\u043a \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v570\/\">V570<\/a> The &#8216;wPipeIndex&#8217; variable is assigned to itself. CEchoGals_transport.cpp 244<\/p>\n<pre><code class=\"cpp\">ECHOSTATUS CEchoGals::CloseAudio (....) {   ....   wPipeIndex = wPipeIndex;   m_ProcessId[ wPipeIndex ] = NULL;   m_Pipes[ wPipeIndex ].wInterleave = 0;   .... }<\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>wPipeIndex<\/i> \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0431\u044b\u043b\u0430 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430.<\/p>\n<h2>\u041e\u0448\u0438\u0431\u043a\u0438 \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v522\/\">V522<\/a> Dereferencing of the null pointer &#8216;currentInterface&#8217; might take place. Device.cpp 258<\/p>\n<pre><code class=\"cpp\">Device::Device(....) : .... {   ....   usb_interface_info* currentInterface = NULL;                     \/\/ &lt;=   uint32 descriptorStart = sizeof(usb_configuration_descriptor);   while (descriptorStart &lt; actualLength) {     switch (configData[descriptorStart + 1]) {     ....     case USB_DESCRIPTOR_ENDPOINT:     {       ....       if (currentInterface == NULL)                                \/\/ &lt;=         break;       currentInterface-&gt;endpoint_count++;       ....     }     ....     case USB_DESCRIPTOR_ENDPOINT_COMPANION: {       usb_endpoint_descriptor* desc = currentInterface             \/\/ &lt;=         -&gt;endpoint[currentInterface-&gt;endpoint_count - 1].descr;       ....     }   .... }<\/code><\/pre>\n<p>  \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>currentInterface <\/i> \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u0451\u043c \u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 \u0432\u0435\u0442\u0432\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>switch<\/i>, \u043d\u043e \u043d\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043a \u043c\u0435\u0442\u043a\u0435 <i>USB_DESCRIPTOR_ENDPOINT_COMPANION<\/i> \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v522\/\">V522<\/a> Dereferencing of the null pointer &#8216;directory&#8217; might take place. PathMonitor.cpp 1465<\/p>\n<pre><code class=\"cpp\">bool PathHandler::_EntryCreated(....) {   ....   Directory* directory = directoryNode-&gt;ToDirectory();   if (directory == NULL) {     \/\/ We're out of sync with reality.     if (!dryRun) {       if (Entry* nodeEntry = directory-&gt;FirstNodeEntry()) {         ....       }     }     return false;   }   .... }<\/code><\/pre>\n<p>  \u042f \u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f <i>directory <\/i> \u0441 \u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u043c. \u041f\u0440\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>dryRun <\/i> \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>false<\/i>, \u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f <i>directory<\/i>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v522\/\">V522<\/a> Dereferencing of the null pointer &#8216;input&#8217; might take place. MediaRecorder.cpp 343<\/p>\n<pre><code class=\"cpp\">void GetInput(media_input* input);  const media_input&amp; BMediaRecorder::MediaInput() const {   CALLED();    media_input* input = NULL;   fNode-&gt;GetInput(input);   return *input; }<\/code><\/pre>\n<p>  \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>input <\/i> \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u0451\u043c \u0438 \u0441 \u0442\u0430\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f, \u0442.\u043a. \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 GetInput \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0412 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 <i>BMediaRecorder <\/i> \u043f\u0438\u0448\u0443\u0442 \u0438\u043d\u0430\u0447\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cpp\">status_t BMediaRecorder::_Connect(....) {   ....   \/\/ Find our Node's free input   media_input ourInput;   fNode-&gt;GetInput(&amp;ourInput);     \/\/ &lt;=   .... }<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043d\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c, \u0438\u043d\u0430\u0447\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u043e \u043a\u043e\u0434 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v522\/\">V522<\/a> Dereferencing of the null pointer &#8216;mustFree&#8217; might take place. RequestUnflattener.cpp 35<\/p>\n<pre><code class=\"cpp\">status_t Reader::Read(int32 size, void** buffer, bool* mustFree) {   if (size &lt; 0 || !buffer || mustFree)  \/\/ &lt;=     return B_BAD_VALUE;    if (size == 0) {     *buffer = NULL;     *mustFree = false;                  \/\/ &lt;=     return B_OK;   }   .... }<\/code><\/pre>\n<p>  \u0412 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438, \u0433\u0434\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0443 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f <i>mustFree<\/i>. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f:<\/p>\n<pre><code class=\"cpp\">if (size &lt; 0 || !buffer || !mustFree)  \/\/ &lt;=   return B_BAD_VALUE;<\/code><\/pre>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v757\/\">V757<\/a> It is possible that an incorrect variable is compared with nullptr after type conversion using &#8216;dynamic_cast&#8217;. Check lines: 474, 476. recover.cpp 474<\/p>\n<pre><code class=\"cpp\">void checkStructure(Disk &amp;disk) {   ....   Inode* missing = gMissing.Get(run);   dir = dynamic_cast&lt;Directory *&gt;(missing);    if (missing == NULL) {     ....   }   .... }<\/code><\/pre>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f <i>missing <\/i> \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>dir <\/i> \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u0430. \u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 <a href=\"https:\/\/www.viva64.com\/ru\/examples\/v3019\/\">\u0447\u0430\u0441\u0442\u043e<\/a> \u0434\u0435\u043b\u0430\u044e\u0442 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C#. \u042d\u0442\u043e \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430.<\/p>\n<p>  \u0415\u0449\u0451 \u043f\u0430\u0440\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043c\u0435\u0441\u0442 \u0432 \u043a\u043e\u0434\u0435:<\/p>\n<ul>\n<li>V757 It is possible that an incorrect variable is compared with nullptr after type conversion using &#8216;dynamic_cast&#8217;. Check lines: 355, 357. ExpandoMenuBar.cpp 355<\/li>\n<li>V757 It is possible that an incorrect variable is compared with nullptr after type conversion using &#8216;dynamic_cast&#8217;. Check lines: 600, 601. ValControl.cpp 600<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u041e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0445<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v557\/\">V557<\/a> Array overrun is possible. The &#8216;BT_SCO&#8217; index is pointing beyond array bound. h2upper.cpp 75<\/p>\n<pre><code class=\"cpp\">struct bt_usb_dev {   ....   struct list nbuffersTx[(1 + 1 + 0 + 0)];         \/\/ &lt;= [0..1]   .... }  typedef enum {     BT_COMMAND = 0,     BT_EVENT,     BT_ACL,     BT_SCO,                                        \/\/ &lt;= 3     BT_ESCO,      HCI_NUM_PACKET_TYPES } bt_packet_t;  void sched_tx_processing(bt_usb_dev* bdev) {   ....   if (!list_is_empty(&amp;bdev-&gt;nbuffersTx[BT_SCO])) { \/\/ &lt;= fail     \/\/ TODO to be implemented   }   .... }<\/code><\/pre>\n<p>  \u041c\u0430\u0441\u0441\u0438\u0432 <i>bdev-&gt;nbuffersTx<\/i> \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432\u0441\u0435\u0433\u043e \u0438\u0437 \u0434\u0432\u0443\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043a\u043e\u0434\u0435 \u043a \u043d\u0435\u043c\u0443 \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0435 BT_SCO, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 3. \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v557\/\">V557<\/a> Array overrun is possible. The &#8216;ieee80211_send_setup&#8217; function processes value &#8217;16&#8217;. Inspect the fourth argument. Check lines: 842, 911. ieee80211_output.c 842<\/p>\n<pre><code class=\"cpp\">struct ieee80211_node {   ....   struct ieee80211_tx_ampdu ni_tx_ampdu[16];              \/\/ &lt;= [0..15]   .... };  #define IEEE80211_NONQOS_TID 16  int ieee80211_mgmt_output(....) {   ....   ieee80211_send_setup(ni, m,      IEEE80211_FC0_TYPE_MGT | type, IEEE80211_NONQOS_TID, \/\/ &lt;= 16      vap-&gt;iv_myaddr, ni-&gt;ni_macaddr, ni-&gt;ni_bssid);   .... }  void ieee80211_send_setup(   struct ieee80211_node *ni,   struct mbuf *m,   int type,   int tid,                                                \/\/ &lt;= 16   ....) {   ....   tap = &amp;ni-&gt;ni_tx_ampdu[tid];                            \/\/ &lt;= 16   .... }<\/code><\/pre>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u043c\u043e\u0433 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443 <i>ni-&gt;ni_tx_ampdu<\/i>, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0438\u0437 16 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 <i>16<\/i>. \u0412 \u044f\u0437\u044b\u043a\u0430\u0445 C \u0438 C++ \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043d\u0443\u043b\u044f.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v781\/\">V781<\/a> The value of the &#8216;vector&#8217; variable is checked after it was used. Perhaps there is a mistake in program logic. Check lines: 802, 805. oce_if.c 802<\/p>\n<pre><code class=\"cpp\">#define OCE_MAX_EQ 32  typedef struct oce_softc {   ....   OCE_INTR_INFO intrs[OCE_MAX_EQ];   .... } OCE_SOFTC, *POCE_SOFTC;  static int oce_alloc_intr(POCE_SOFTC sc, int vector, void (*isr) (void *arg, int pending)) {   POCE_INTR_INFO ii = &amp;sc-&gt;intrs[vector];   int rc = 0, rr;    if (vector &gt;= OCE_MAX_EQ)     return (EINVAL);   .... }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443 <i>sc-&gt;intrs<\/i> \u043f\u043e \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u043c\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0443 (\u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430). \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u2014 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043a\u043e\u0434\u0430. \u0417\u0434\u0435\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430.<\/p>\n<p>  \u041a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u0435\u0434\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u0417\u0434\u0435\u0441\u044c \u0432\u0435\u0434\u044c \u043d\u0435 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u044f\u0447\u0435\u0439\u043a\u0438. \u041d\u0435\u0442, \u0442\u0430\u043a \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435: &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0306\/\">\u0420\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e<\/a>&#171;.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v519\/\">V519<\/a> The variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 199, 200. nvme_ctrlr.c 200<\/p>\n<pre><code class=\"cpp\">static void nvme_ctrlr_set_intel_supported_features(struct nvme_ctrlr *ctrlr) {   bool *supported_feature = ctrlr-&gt;feature_supported;    supported_feature[NVME_INTEL_FEAT_MAX_LBA] = true;   supported_feature[NVME_INTEL_FEAT_MAX_LBA] = true;   supported_feature[NVME_INTEL_FEAT_NATIVE_MAX_LBA] = true;   supported_feature[NVME_INTEL_FEAT_POWER_GOVERNOR_SETTING] = true;   supported_feature[NVME_INTEL_FEAT_SMBUS_ADDRESS] = true;   supported_feature[NVME_INTEL_FEAT_LED_PATTERN] = true;   supported_feature[NVME_INTEL_FEAT_RESET_TIMED_WORKLOAD_COUNTERS] = true;   supported_feature[NVME_INTEL_FEAT_LATENCY_TRACKING] = true; }<\/code><\/pre>\n<p>  \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c <i>NVME_INTEL_FEAT_MAX_LBA<\/i> \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438 \u043a\u043e\u0434 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c Copy-Paste \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0430\u044f.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v519\/\">V519<\/a> The &#8216;copiedPath[len]&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 92, 93. kernel_emu.cpp 93<\/p>\n<pre><code class=\"cpp\">int UserlandFS::KernelEmu::new_path(const char *path, char **copy) {   ....   \/\/ append a dot, if desired   if (appendDot) {     copiedPath[len] = '.';     copiedPath[len] = '\\0';   }   .... }<\/code><\/pre>\n<p>  \u0410 \u0442\u0443\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043d\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e \u0441 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041a \u043d\u0435\u043a\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b \u00ab\u0442\u043e\u0447\u043a\u0430\u00bb \u0438 \u0442\u0443\u0442 \u0436\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0443\u043b\u0451\u043c. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0437\u0430\u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0443.<\/p>\n<h2>\u0421\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v517\/\">V517<\/a> The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 1407, 1410. FindPanel.cpp 1407<\/p>\n<pre><code class=\"cpp\">void FindPanel::BuildAttrQuery(BQuery* query, bool &amp;dynamicDate) const {   ....   case B_BOOL_TYPE:   {     uint32 value;     if (strcasecmp(textControl-&gt;Text(),         \"true\") == 0) {       value = 1;     } else if (strcasecmp(textControl-&gt;Text(),         \"true\") == 0) {       value = 1;     } else       value = (uint32)atoi(textControl-&gt;Text());      value %= 2;     query-&gt;PushUInt32(value);     break;   }   .... }<\/code><\/pre>\n<p>  \u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u0441\u0440\u0430\u0437\u0443 \u043a \u0434\u0432\u0443\u043c \u043e\u0448\u0438\u0431\u043a\u0430\u043c. \u0423\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043d\u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u00abfalse\u00bb, \u0432\u043c\u0435\u0441\u0442\u043e \u00abtrue\u00bb. \u0414\u0430\u043b\u0435\u0435, \u0432 \u0432\u0435\u0442\u0432\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00abfalse\u00bb, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>value <\/i> \u0441 <i>1<\/i> \u043d\u0430 <i>0<\/i>. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0442 <i>true <\/i> \u0438\u043b\u0438 <i>false<\/i>, \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0447\u0438\u0441\u043b\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>atoi<\/i>, \u043d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u0438 \u0442\u0435\u043a\u0441\u0442 \u00abfalse\u00bb.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v547\/\">V547<\/a> Expression &#8216;error == ((int) 0)&#8217; is always true. Directory.cpp 688<\/p>\n<pre><code class=\"cpp\">int32 BDirectory::CountEntries() {   status_t error = Rewind();   if (error != B_OK)     return error;   int32 count = 0;   BPrivate::Storage::LongDirEntry entry;   while (error == B_OK) {     if (GetNextDirents(&amp;entry, sizeof(entry), 1) != 1)       break;     if (strcmp(entry.d_name, \".\") != 0 &amp;&amp; strcmp(entry.d_name, \"..\") != 0)       count++;   }   Rewind();   return (error == B_OK ? count : error); }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>error <\/i> \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 <i>B_OK<\/i>. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432 \u0446\u0438\u043a\u043b\u0435 <i>while <\/i> \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v564\/\">V564<\/a> The &#8216;&amp;&#8217; operator is applied to bool type value. You&#8217;ve probably forgotten to include parentheses or intended to use the &#8216;&amp;&amp;&#8217; operator. strtod.c 545<\/p>\n<pre><code class=\"cpp\">static int lo0bits(ULong *y) {   int k;   ULong x = *y;   ....   if (!(x &amp; 1)) {     k++;     x &gt;&gt;= 1;     if (!x &amp; 1)   \/\/ &lt;=       return 32;   }   *y = x;   return k; }<\/code><\/pre>\n<p>  \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0437\u0430\u0431\u044b\u043b\u0438 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438, \u043a\u0430\u043a \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0432\u044b\u0448\u0435. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"cpp\">if (!(x &amp; 1))   \/\/ &lt;=       return 32;<\/code><\/pre>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v590\/\">V590<\/a> Consider inspecting this expression. The expression is excessive or contains a misprint. PoseView.cpp 5851<\/p>\n<pre><code class=\"cpp\">bool BPoseView::AttributeChanged(const BMessage* message) {   ....   result = poseModel-&gt;OpenNode();   if (result == B_OK || result != B_BUSY)     break;   .... }<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f B_OK. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c:<\/p>\n<pre><code class=\"cpp\">If (result != B_BUSY)   break;<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>result<\/i>. \u0415\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0442 <i>B_OK<\/i> \u0438 <i>B_BUSY<\/i>, \u0442\u043e \u043a\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u0430\u0447\u0435.<\/p>\n<p>  \u0415\u0449\u0451 \u0434\u0432\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f:<\/p>\n<ul>\n<li>V590 Consider inspecting this expression. The expression is excessive or contains a misprint. Tracker.cpp 1714<\/li>\n<li>V590 Consider inspecting this expression. The expression is excessive or contains a misprint. if_ipw.c 1871<\/li>\n<\/ul>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v590\/\">V590<\/a> Consider inspecting the &#8216;argc == 0 || argc != 2&#8217; expression. The expression is excessive or contains a misprint. cmds.c 2667<\/p>\n<pre><code class=\"cpp\">void unsetoption(int argc, char *argv[]) {   ....   if (argc == 0 || argc != 2) {     fprintf(ttyout, \"usage: %s option\\n\", argv[0]);     return;   }   .... }<\/code><\/pre>\n<p>  \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 <a href=\"https:\/\/www.viva64.com\/ru\/w\/v590\/\">V590<\/a>. \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0438\u043b\u0438 \u0438\u0445 \u043d\u0435 \u0434\u0432\u0430. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043b\u044e\u0431\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0442 \u0434\u0432\u0443\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u043e\u043b\u044c, \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0441\u043c\u0435\u043b\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0434\u043e \u0442\u0430\u043a\u043e\u0433\u043e:<\/p>\n<pre><code class=\"cpp\">if (argc != 2) {     fprintf(ttyout, \"usage: %s option\\n\", argv[0]);     return; }<\/code><\/pre>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v590\/\">V590<\/a> Consider inspecting the &#8216;* ptr == &#8216;;&#8217; &amp;&amp; * ptr != &#8216;\\0&#187; expression. The expression is excessive or contains a misprint. pc.c 316<\/p>\n<pre><code class=\"cpp\">ULONG parse_expression(char *str) {   ....   ptr = skipwhite(ptr);   while (*ptr == SEMI_COLON &amp;&amp; *ptr != '\\0')    {      ptr++;      if (*ptr == '\\0')        continue;       val = assignment_expr(&amp;ptr);    }   .... }<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043d\u043e \u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u0435\u0436\u043d\u0435\u0439. \u0417\u0434\u0435\u0441\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 while \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0440\u0430\u0432\u0435\u043d \u0441\u0438\u043c\u0432\u043e\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e <i>SEMI_COLON <\/i> \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v590\/\">V590<\/a> Consider inspecting this expression. The expression is excessive or contains a misprint. writembr.cpp 99<\/p>\n<pre><code class=\"cpp\">int main(int argc, char** argv) {   ....   string choice;   getline(cin, choice, '\\n');   if (choice == \"no\" || choice == \"\" || choice != \"yes\") {     cerr &lt;&lt; \"MBR was NOT written\" &lt;&lt; endl;     fs.close();     return B_ERROR;   }   .... }<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u0436\u0435 \u0442\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f. \u0415\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u00abyes\u00bb \u0438\u043b\u0438 \u043d\u0435\u0442:<\/p>\n<pre><code class=\"cpp\">if (choice != \"yes\") {   cerr &lt;&lt; \"MBR was NOT written\" &lt;&lt; endl;   fs.close();   return B_ERROR; }<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0420\u0430\u0437\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v530\/\">V530<\/a> The return value of function &#8216;begin&#8217; is required to be utilized. IMAPFolder.cpp 414<\/p>\n<pre><code class=\"cpp\">void IMAPFolder::RegisterPendingBodies(...., const BMessenger* replyTo) {   ....   IMAP::MessageUIDList::const_iterator iterator = uids.begin();   for (; iterator != uids.end(); iterator++) {     if (replyTo != NULL)       fPendingBodies[*iterator].push_back(*replyTo);     else       fPendingBodies[*iterator].begin();   \/\/ &lt;=   } }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>begin().<\/i> \u041d\u0435 \u043c\u043e\u0433\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u043a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v609\/\">V609<\/a> Divide by zero. Denominator range [0..64]. UiUtils.cpp 544<\/p>\n<pre><code class=\"cpp\">static int32 GetSIMDFormatByteSize(uint32 format) {   switch (format) {     case SIMD_RENDER_FORMAT_INT8:       return sizeof(char);     case SIMD_RENDER_FORMAT_INT16:       return sizeof(int16);     case SIMD_RENDER_FORMAT_INT32:       return sizeof(int32);     case SIMD_RENDER_FORMAT_INT64:       return sizeof(int64);     case SIMD_RENDER_FORMAT_FLOAT:       return sizeof(float);     case SIMD_RENDER_FORMAT_DOUBLE:       return sizeof(double);   }   return 0; }  const BString&amp; UiUtils::FormatSIMDValue(const BVariant&amp; value, uint32 bitSize,   uint32 format, BString&amp; _output) {   _output.SetTo(\"{\");   char* data = (char*)value.ToPointer();   uint32 count = bitSize \/ (GetSIMDFormatByteSize(format) * 8);  \/\/ &lt;=   .... }<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <i>GetSIMDFormatByteSize<\/i> \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <i>0<\/i> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043d\u0430 \u043d\u043e\u043b\u044c.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v654\/\">V654<\/a> The condition &#8216;specificSequence != sequence&#8217; of loop is always false. pthread_key.cpp 55<\/p>\n<pre><code class=\"cpp\">static void* get_key_value(pthread_thread* thread, uint32 key, int32 sequence) {   pthread_key_data&amp; keyData = thread-&gt;specific[key];   int32 specificSequence;   void* value;    do {     specificSequence = keyData.sequence;     if (specificSequence != sequence)       return NULL;      value = keyData.value;   } while (specificSequence != sequence);    keyData.value = NULL;    return value; }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u0440\u0430\u0432, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>while <\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u043e\u0436\u043d\u043e. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432 \u0446\u0438\u043a\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u044b \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0435\u0441\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <i>while(0)<\/i>. \u0412\u0441\u0451 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v672\/\">V672<\/a> There is probably no need in creating the new &#8216;path&#8217; variable here. One of the function&#8217;s arguments possesses the same name and this argument is a reference. Check lines: 348, 429. translate.cpp 429<\/p>\n<pre><code class=\"cpp\">status_t Translator::FindPath(...., TypeList &amp;path, double &amp;pathQuality) {   ....   TypeList path;   double quality;   if (FindPath(&amp;formats[j], stream, typesSeen, path, quality) == B_OK) {     if (bestQuality &lt; quality * formatQuality) {       bestQuality = quality * formatQuality;       bestPath.SetTo(path);       bestPath.Add(formats[j].type);       status = B_OK;     }   }   .... }<\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>path <\/i> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <i>FindPath <\/i> \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u0442\u0435\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041d\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v705\/\">V705<\/a> It is possible that &#8216;else&#8217; block was forgotten or commented out, thus altering the program&#8217;s operation logics. HostnameView.cpp 109<\/p>\n<pre><code class=\"cpp\">status_t HostnameView::_LoadHostname() {   BString fHostnameString;   char hostname[MAXHOSTNAMELEN];    if (gethostname(hostname, MAXHOSTNAMELEN) == 0) {      fHostnameString.SetTo(hostname, MAXHOSTNAMELEN);     fHostname-&gt;SetText(fHostnameString);      return B_OK;   } else    return B_ERROR; }<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430. \u00ab\u0417\u0430\u0432\u0438\u0441\u0448\u0435\u0435\u00bb \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <i>else <\/i> \u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443, \u043d\u043e \u044d\u0442\u043e \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c <i>return<\/i>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v763\/\">V763<\/a> Parameter &#8216;menu&#8217; is always rewritten in function body before being used. video.cpp 648<\/p>\n<pre><code class=\"cpp\">bool video_mode_hook(Menu *menu, MenuItem *item) {   video_mode *mode = NULL;    menu = item-&gt;Submenu();   item = menu-&gt;FindMarked();   .... }<\/code><\/pre>\n<p>  \u041d\u0430\u0448\u043b\u043e\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0422\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0432\u043e\u0434\u0438\u0442 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  \u0412\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0442:<\/p>\n<ul>\n<li>V763 Parameter &#8216;force_16bit&#8217; is always rewritten in function body before being used. ata_adapter.cpp 151<\/li>\n<li>V763 Parameter &#8216;force_16bit&#8217; is always rewritten in function body before being used. ata_adapter.cpp 179<\/li>\n<li>V763 Parameter &#8216;menu&#8217; is always rewritten in function body before being used. video.cpp 264<\/li>\n<li>V763 Parameter &#8216;length&#8217; is always rewritten in function body before being used. MailMessage.cpp 677<\/li>\n<li>V763 Parameter &#8216;entry&#8217; is always rewritten in function body before being used. IconCache.cpp 773<\/li>\n<li>V763 Parameter &#8216;entry&#8217; is always rewritten in function body before being used. IconCache.cpp 832<\/li>\n<li>V763 Parameter &#8216;entry&#8217; is always rewritten in function body before being used. IconCache.cpp 864<\/li>\n<li>V763 Parameter &#8216;rect&#8217; is always rewritten in function body before being used. ErrorLogWindow.cpp 56<\/li>\n<li>V763 Parameter &#8216;updateRect&#8217; is always rewritten in function body before being used. CalendarMenuWindow.cpp 49<\/li>\n<li>V763 Parameter &#8216;rect&#8217; is always rewritten in function body before being used. MemoryView.cpp 165<\/li>\n<li>V763 Parameter &#8216;rect&#8217; is always rewritten in function body before being used. TypeEditors.cpp 1124<\/li>\n<li>V763 Parameter &#8216;height&#8217; is always rewritten in function body before being used. Workspaces.cpp 857<\/li>\n<li>V763 Parameter &#8216;width&#8217; is always rewritten in function body before being used. Workspaces.cpp 856<\/li>\n<li>V763 Parameter &#8216;frame&#8217; is always rewritten in function body before being used. SwatchGroup.cpp 48<\/li>\n<li>V763 Parameter &#8216;frame&#8217; is always rewritten in function body before being used. PlaylistWindow.cpp 89<\/li>\n<li>V763 Parameter &#8216;rect&#8217; is always rewritten in function body before being used. ConfigView.cpp 78<\/li>\n<li>V763 Parameter &#8216;m&#8217; is always rewritten in function body before being used. mkntfs.c 3917<\/li>\n<li>V763 Parameter &#8216;rxchainmask&#8217; is always rewritten in function body before being used. ar5416_cal.c 463<\/li>\n<li>V763 Parameter &#8216;c&#8217; is always rewritten in function body before being used. if_iwn.c 6854<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041f\u0440\u043e\u0435\u043a\u0442 Haiku \u2014 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438 \u0440\u0435\u0434\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a. \u041c\u044b \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u043d\u0430\u0448\u0443 \u0431\u0430\u0437\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435, \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u043a\u043e\u0434\u0430.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434 \u043a\u0430\u043a\u0438\u043c\u0438-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430, \u0442\u043e \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0435\u0441\u0442\u044c \u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u0434\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 PVS-Studio \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 C, C++, C# \u0438\u043b\u0438 Java. \u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0431\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0441\u043c\u0441 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  \u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c Haiku \u0438 \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b? \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Haiku \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e\u0442 \u0432\u0430\u0441 \u0432 <a href=\"https:\/\/t.me\/HaikuOS_RU_chat\">telegram-\u043a\u0430\u043d\u0430\u043b<\/a>.<\/p>\n<p><a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/461517\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/898\/3b6\/5a7\/8983b65a74adb29a2113eba12fbec3f1.png\" align=\"left\"><\/a><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Svyatoslav Razmyslov. <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/461517\/\">Best Copy-Paste Algorithms for C and C++. Haiku OS Cookbook<\/a><\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/461519\/\"> https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/461519\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u041c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0438 Copy-Paste \u043a\u043e\u0434 \u0441\u0442\u0430\u043b\u0438 \u0442\u0435\u043c\u043e\u0439 \u0434\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043a\u043e\u0434\u0430 Haiku \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c PVS-Studio. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0431\u0443\u0434\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u043c\u0438, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0441 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u043c \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c. \u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u0451\u043d \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/628\/e3b\/d89\/628e3bd8949d3e3155f16a836fc0595c.png\" alt=\"Picture 1\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-292632","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=292632"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292632\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=292632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=292632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=292632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}