рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдмрдирд╛рдо рдХреНрд░реЛрдорд┐рдпрдо

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡реАрдПрдПрд╕ рдХреНрд░реЛрдорд┐рдпрдо
рдЗрд╕ рдмрд╛рд░ рдЬреАрдд рдЕрдЪреНрдЫреА рд░рд╣реАред рдпрд╛ рдмрд▓реНрдХрд┐, рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдбред рдХреНрд░реЛрдорд┐рдпрдо рдЙрди рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛ред

рдХреНрд░реЛрдорд┐рдпрдо Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреЗрдЬрд╝ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░, Google Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдХреНрд░реЛрдорд┐рдпрдо Google Chrome рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рд╕рд╛рде рд╣реА рдХрдИ рдЕрдиреНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рднреА рд╣реИрдВред

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдХреНрд░реЛрдорд┐рдпрдо 473 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред C / C ++ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдХреБрд▓ рд░рд╛рд╢рд┐ рд▓рдЧрднрдЧ 460 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИред рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдЗрди 460 рдореЗрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓рдЧрднрдЧ 155 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд░рд╣реЗрдВрдЧреЗред рдХрд╛рдлреА рдХрдо рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдм рдХреБрдЫ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреНрд░реЛрдорд┐рдпрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХреНрд░реЛрдорд┐рдпрдо рдмрдирд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдереЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдкрдиреЗ рджрдо рдкрд░ рд░рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╣реА рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрд░реЛрдорд┐рдпрдо рд╕рдмрд╕реЗ рдмрдбрд╝реА рдФрд░ рд╕рдмрд╕реЗ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдереА рдЬреЛ рдореБрдЭреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди рдорд┐рд▓реА рдереАред рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдХреМрди рдХрд┐рд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдордиреЗ C ++ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд PVS-Studio рдореЗрдВ рдХрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИрдВ рдФрд░ рдареАрдХ рдХрд░ рджреАрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ред

рд╕реНрд░реЛрдд рдХреЛрдб рдХреНрд░реЛрдорд┐рдпрдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрд┐рдВрджреБрдУрдВ рдФрд░ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
int XX[] = { 1, 2, 3, 4 }; size_t N = sizeof(XX) / sizeof(XX[0]); 

рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХреЗ рдПрдХ рдореИрдХреНрд░реЛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 #define count_of(arg) (sizeof(arg) / sizeof(arg[0])) 

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдореИрдХреНрд░реЛ рд╣реИред рд╕рдЪ рдХрд╣реВрдВ рддреЛ, рдореИрдВрдиреЗ рдЦреБрдж рд╣рдореЗрд╢рд╛ рд╕рд┐рд░реНрдл рдРрд╕реЗ рдореИрдХреНрд░реЛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЧрд▓рддреА рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЦрд┐рд╕рдХрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд╣ рдЗрд╕реЗ рдмреБрд░рд╛ рдирд╣реАрдВ рдорд╛рдиреЗрдЧрд╛ред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛рдКрдВрдЧрд╛:
 void Test(int C[3]) { int A[3]; int *B = Foo(); size_t x = count_of( A ); // Ok x = count_of( B ); // Error x = count_of( C ); // Error } 

Count_of (A) рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░рдгреА A рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рддреАрди рдХреЗ рдмрд░рд╛рдмрд░ рджреЗрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЧрд▓рддреА рд╕реЗ count_of () рдХреЛ рдкреЙрдЗрдВрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЕрд░реНрдерд╣реАрди рдореВрд▓реНрдп рд╣реЛрдЧрд╛ред рдкрд░реЗрд╢рд╛рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдореИрдХреНрд░реЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдлреЙрд░реНрдо рдХрд╛рдЙрдВрдЯ_рдСрдл (рдмреА) рдХреЗ рдПрдХ рдЕрдЬреАрдм рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд╕реВрдЪрдХ рдХрд╛ рдЖрдХрд╛рд░ рд╕рд░рдгреА рддрддреНрд╡ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕реНрдерд┐рддрд┐ рджреВрд░ рдХреА рдХреМрдбрд╝реА рдФрд░ рдХреГрддреНрд░рд┐рдо рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдорд┐рд▓рд╛ред рдореИрдВ рдорд┐рд░рд╛рдВрдбрд╛ IM рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
 #define SIZEOF(X) (sizeof(X)/sizeof(X[0])) int Cache_GetLineText(..., LPTSTR text, int text_size, ...) { ... tmi.printDateTime(pdnce->hTimeZone, _T("t"), text, SIZEOF(text), 0); ... } 

рдЗрд╕рд▓рд┐рдП рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд╛рдлреА рд╣рдж рддрдХ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЦрд┐рд▓рд╛рдл рдмрдЪрд╛рд╡ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧрд▓рддреА рдХрд░рдирд╛ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИ:
 void Test(int C[3]) { x = count_of( C ); // Error } 

C ++ рднрд╛рд╖рд╛ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЪрд░ 'C' рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реВрдЪрдХ рд╣реИ, рди рдХрд┐ рдПрдХ рд╕рд░рдгреАред рдирддреАрдЬрддрди, рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдПрдХ рдЕрдХреНрд╕рд░ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд┐рдП рдЧрдП рд╕рд░рдгреА рдХреЗ рдХреЗрд╡рд▓ рднрд╛рдЧ рдХрд╛ рд╣реА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░ рдкрд╛рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╣рдо рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдкреНрд░реЗрд╖рд┐рдд рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд░реЗрдВ:
 void Test(int (&C)[3]) { x = count_of( C ); // Ok } 

рдЕрдм рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ count_of (C) рдХрд╛ рдкрд░рд┐рдгрд╛рдо 3 рд╣реИред

рд╡рд╛рдкрд╕ рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рд▓рд┐рдПред рдпрд╣ рдПрдХ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:
 template <typename T, size_t N> char (&ArraySizeHelper(T (&array)[N]))[N]; #define arraysize(array) (sizeof(ArraySizeHelper(array))) 

рдЗрд╕ рдЬрд╛рджреВ рдордВрддреНрд░ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред ArraySizeHelper рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рд▓рдВрдмрд╛рдИ N рдХреЗ рдПрдХ рдордирдорд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд░рдгреА рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд▓рдВрдмрд╛рдИ 'char' рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ Nред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдХрд╛рд░-рдкреНрд░рдХрд╛рд░ () рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдРрд░реЗрд╕рд╛рдЗрдЬрд╝ рд╣реЗрд▓реНрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред 'Arraysize' рдореИрдХреНрд░реЛ ArraySizeHelper рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдХрд╛рд░ рд╕рд░рдгреА рдореЗрдВ рдЙрди рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рдирдХреА рд▓рдВрдмрд╛рдИ рд╣рдо рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рд┐рд░ рд╕реВрдЬ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╢рдмреНрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдордЭреЗ рдЧрдП рдореИрдХреНрд░реЛ 'count_of ()' рд╕реЗ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред рдЪреВрдВрдХрд┐ ArraySizeHelper рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреЙрдЗрдВрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд▓рд┐рдЦреЗрдВ:
 template <typename T, size_t N> char (&ArraySizeHelper(T (&array)[N]))[N]; #define arraysize(array) (sizeof(ArraySizeHelper(array))) void Test(int C[3]) { int A[3]; int *B = Foo(); size_t x = arraysize( A ); // Ok x = arraysize( B ); //   x = arraysize( C ); //   } 

рдЧрд▓рдд рдХреЛрдб рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред Google рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдореНрдорд╛рдиред

рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ, рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдпреЛрдЬрдирд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░рдирд╛ред
 if (!file_util::Delete(db_name, false) && !file_util::Delete(db_name, false)) { // Try to delete twice. If we can't, fail. LOG(ERROR) << "unable to delete old TopSites file"; return false; } 

рдпрд╣ рдХреЛрдб рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЛ рдмрд╛рд░ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рд▓реЗрдХрд┐рди рдПрдХ рднрд╛рд╡ рд╣реИред рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдиреЗ рдЖрддреНрдордЬреНрдЮрд╛рди рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛрдиреЗ рдХрд╛ рд╕рд╛рд░ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХреЛрдВ рдФрд░ рдЕрдореВрд░реНрдд рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣реА рдирд╖реНрдЯ рдпрд╛ рдирд╣реАрдВ рд╣рдЯрд╛рдИ рдЬрд╛рддреА рд╣реИред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрд╛ рдФрд░ рдПрдХ рдкрд▓ рдмрд╛рдж - рдпрд╣ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕, рд╡рд╛рдпрд░рд╕, рд╡рд░реНрдЬрди рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рднрдЧрд╡рд╛рди рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдФрд░ рдХреНрдпрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдХреНрд╕рд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рд╡реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд░рд╕реНрдерддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди, рдпрджрд┐ рдЖрдк рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреИрдЯрд▓реЙрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рднрд╛рд╡реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдпрд╛ рдерд╛ рдЬрдм рдкреНрд░рддрд┐ 1000 рдмрд╛рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдлреИрд╕рд▓рд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рдерд╛ред рдареАрдХ рд╣реИ, рдЬрдм рддрдХ рдореИрдВ рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ рдиреАрдВрдж (0) рдмреАрдЪ рдореЗрдВ рдбрд╛рд▓рд╛ред

рд▓реЗрдХрд┐рди рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХреНрд░реЛрдорд┐рдпрдо рдХреЛрдб рд╢рд╛рдпрдж рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛрдб рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдмрд╣реБрдд рдХрдо рдШрдирддреНрд╡ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рд╣рдо рдорд╛рддреНрд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдХреЛрдб рдХреА рд░рд╛рд╢рд┐ рд╕реЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдирд╣реАрдВ рд╣реИрдВред рдпреЗ рдЧрд▓рддрд┐рдпрд╛рдБ рдХреНрдпрд╛ рд╣реИрдВ? рд╕рдмрд╕реЗ рд╕рд╛рдзрд╛рд░рдгред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:
 V512 A call of the 'memset' function will lead to underflow of the buffer '(exploded)'. platform time_win.cc 116 

 void NaCl::Time::Explode(bool is_local, Exploded* exploded) const { ... ZeroMemory(exploded, sizeof(exploded)); ... } 

рдЯрд╛рдЗрдкреЛ рдпрд╣ рд╕рдм рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╕рд┐рд░реНрдл рд╕реНрдЯрд╛рд░ рдХреЛ рднреВрд▓ рдЧрдПред рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛: sizeof (* рд╡рд┐рд╕реНрдлреЛрдЯ)ред
 V502 Perhaps the '?:' operator works in a different way than it was expected. The '?:' operator has a lower priority than the '-' operator. views custom_frame_view.cc 400 

 static const int kClientEdgeThickness; int height() const; bool ShouldShowClientEdge() const; void CustomFrameView::PaintMaximizedFrameBorder(gfx::Canvas* canvas) { ... int edge_height = titlebar_bottom->height() - ShouldShowClientEdge() ? kClientEdgeThickness : 0; ... } 

рдХрдкрдЯреА рд╕рдВрдЪрд╛рд▓рдХ "?:" рдШрдЯрд╛рд╡ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрд╖реНрдардХ рдпрд╣рд╛рдБ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:
 int edge_height = titlebar_bottom->height() - (ShouldShowClientEdge() ? kClientEdgeThickness : 0); 

рдПрдХ рдЪреЗрдХ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред
 V547 Expression 'count < 0' is always false. Unsigned type value is never < 0. ncdecode_tablegen ncdecode_tablegen.c 197 

 static void CharAdvance(char** buffer, size_t* buffer_size, size_t count) { if (count < 0) { NaClFatal("Unable to advance buffer by count!"); } else { ... } 

рд╢рд░реНрдд "рдЧрд┐рдирддреА <0" рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред рд╕рдВрд░рдХреНрд╖рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдмрдлрд░ рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣, рд╡реИрд╕реЗ, рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЬрд▓реНрджреА рд╕реЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдЙрдирдХреЗ рдЖрдЧреЗ, рдЕрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдХреЛрдб рдХреЛрдб рд╣реИ рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
 V511 The sizeof() operator returns size of the pointer, and not of the array, in 'sizeof (salt)' expression. common visitedlink_common.cc 84 

 void MD5Update(MD5Context* context, const void* buf, size_t len); VisitedLinkCommon::Fingerprint VisitedLinkCommon::ComputeURLFingerprint( ... const uint8 salt[LINK_SALT_LENGTH]) { ... MD5Update(&ctx, salt, sizeof(salt)); ... } 

MD5Update () рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдкреЙрдЗрдВрдЯрд░ рд╡реНрдпрд╛рдкреНрдд рд╣реИред рдХреНрдпрд╛ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЫреЗрдж рд╣реИ? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рд╕рдм рдореЗрдВ рдХреЛрдИ рдЦрддрд░рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЬрдЧрд╣ рд╣реИред

рд╕рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
 MD5Update(&ctx, salt, sizeof(salt[0]) * LINK_SALT_LENGTH); 

рдпрд╛ рдЗрд╕ рддрд░рд╣:
 VisitedLinkCommon::Fingerprint VisitedLinkCommon::ComputeURLFingerprint( ... const uint8 (&salt)[LINK_SALT_LENGTH]) { ... MD5Update(&ctx, salt, sizeof(salt)); ... } 

рдПрдХ рдЕрдиреНрдп рдЯрд╛рдЗрдкреЛ рдЙрджрд╛рд╣рд░рдг:
 V501 There are identical sub-expressions 'host != buzz::XmlConstants::str_empty ()' to the left and to the right of the '&&' operator. chromoting_jingle_glue iq_request.cc 248 

 void JingleInfoRequest::OnResponse(const buzz::XmlElement* stanza) { ... std::string host = server->Attr(buzz::QN_JINGLE_INFO_HOST); std::string port_str = server->Attr(buzz::QN_JINGLE_INFO_UDP); if (host != buzz::STR_EMPTY && host != buzz::STR_EMPTY) { ... } 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдХреЛ port_str рдЪрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 if (host != buzz::STR_EMPTY && port_str != buzz::STR_EMPTY) { 

рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛:
 V530 The return value of function 'empty' is required to be utilized. chrome_frame_npapi np_proxy_service.cc 293 

 bool NpProxyService::GetProxyValueJSONString(std::string* output) { DCHECK(output); output->empty(); ... } 

рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдЖрдЙрдЯрдкреБрдЯ-> рд╕реНрдкрд╖реНрдЯ ();

рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рднреА рдПрдХ рд╢реВрдиреНрдп рд╕реВрдЪрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╣реИ:
 V522 Dereferencing of the null pointer 'plugin_instance' might take place. Check the logical condition. chrome_frame_npapi chrome_frame_npapi.cc 517 

 bool ChromeFrameNPAPI::Invoke(...) { ChromeFrameNPAPI* plugin_instance = ChromeFrameInstanceFromNPObject(header); if (!plugin_instance && (plugin_instance->automation_client_.get())) return false; ... } 

рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рд╛ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:
 V547 Expression 'current_idle_time < 0' is always false. Unsigned type value is never < 0. browser idle_win.cc 23 

 IdleState CalculateIdleState(unsigned int idle_threshold) { ... DWORD current_idle_time = 0; ... // Will go -ve if we have been idle for a long time (2gb seconds). if (current_idle_time < 0) current_idle_time = INT_MAX; ... } 

рд╢рд╛рдпрдж рд╣рдореЗрдВ рд░реБрдХ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдмрд╛рдК рд╣реИред рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╣реА рд╣реИ рдЬреЛ рдХреНрд░реЛрдорд┐рдпрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрднреА рднреА рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ:

 V554 Incorrect use of auto_ptr. The memory allocated with 'new []' will be cleaned using 'delete'. interactive_ui_tests accessibility_win_browsertest.cc 306 


 void AccessibleChecker::CheckAccessibleChildren(IAccessible* parent) { ... auto_ptr<VARIANT> child_array(new VARIANT[child_count]); ... } 

рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕ рдкрд░ рдХреНрд░реЛрдорд┐рдпрдо рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред рдФрд░ рдХреЛрдб рдореЗрдВ рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рд╕реНрдерд╛рди рднреА рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХрд╛ рдХрд╣реАрдВ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╕реЗ рддреНрд░реБрдЯрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЖрдУ (ICU рд▓рд╛рдЗрдмреНрд░реЗрд░реА):
 V547 Expression '* string != 0 || * string != '_'' is always true. Probably the '&&' operator should be used here. icui18n ucol_sit.cpp 242 

 U_CDECL_BEGIN static const char* U_CALLCONV _processVariableTop(...) { ... if(i == locElementCapacity && (*string != 0 || *string != '_')) { *status = U_BUFFER_OVERFLOW_ERROR; } ... } 

рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "(* рд╕реНрдЯреНрд░рд┐рдВрдЧ! = 0 || * рд╕реНрдЯреНрд░рд┐рдВрдЧ! = '_')" рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реИред рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: (* string == 0 || * string == '_')ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рд╣рд╛рд░ рд╣реБрдИред рдХреНрд░реЛрдорд┐рдпрдо рдХреЛрдб рдЙрди рд╕рд░реНрд╡реЛрддреНрддрдо рдХреЛрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рд╣реИред рд╣рдореЗрдВ рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдмрд▓реНрдХрд┐, рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЧрд▓рддрд┐рдпрд╛рдБ рдорд┐рд▓реАрдВ, рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдордиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рджрд┐рдЦрд╛рдпрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╕рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ 460 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдлреИрд▓реА рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдирд╣реАрдВ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ

рдореИрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реВрдВ: рдХреНрдпрд╛ рд╣рдо рдкрд╛рдП рдЧрдП рдмрдЧ рдХреЗ рдХреНрд░реЛрдорд┐рдпрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ? рдирд╣реАрдВ, рд╣рдо рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдореБрдлреНрдд рдореЗрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдХреНрд░реЛрдорд┐рдпрдо рдЪреЗрдХ рдорд┐рд░рд╛рдВрдбрд╛ IM рдЪреЗрдХ рдпрд╛ рдЕрд▓реНрдЯреАрдореЗрдЯ рдЯреВрд▓рдмреЙрдХреНрд╕ рдЪреЗрдХ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ ред рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рдо рд╣реИ, рдЖрдкрдХреЛ рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд▓рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдХреНрд░реЛрдорд┐рдпрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рд╡реЗ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕реНрд╡рдпрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рд╕рднреА рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рд╣рд╛рдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЦрд░реАрджрдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди Google рдХрд╛ рдХреЛрдИ рднреА рд╡рд┐рднрд╛рдЧ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд╣рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдкреА рдкреА рдПрд╕

рдирд╣реАрдВ, рд╣рдо рд▓рд╛рд▓рдЪреА рдирд╣реАрдВ рд╣реИрдВред рд╣рдо рдлреНрд▓рд╛рдИрд▓рд┐рдВрдХрдбреАрд╕реА ++ рдЬреИрд╕реА рдУрдкрди рд╕реЛрд░реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпреЗ рджреЛ рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВред

Source: https://habr.com/ru/post/In119815/


All Articles