рд╕реА рдФрд░ рд╕реА ++ рдореЗрдВ рдЦреБрдж рдХреЛ рдкреИрд░ рдореЗрдВ рдХреИрд╕реЗ рдЧреЛрд▓реА рдорд╛рд░рдирд╛ рд╣реИред рд╣рд╛рдЗрдХреБ рдУрдПрд╕ рд░реЗрд╕рд┐рдкреА рд╕рдВрдЧреНрд░рд╣

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

рдЪрд┐рддреНрд░ 3


рдкрд░рд┐рдЪрдп


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

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

cd /opt git clone https://review.haiku-os.org/buildtools git clone https://review.haiku-os.org/haiku cd ./haiku mkdir generated.x86_64; cd generated.x86_64 ../configure --distro-compatibility official -j12 \ --build-cross-tools x86_64 ../../buildtools cd ../../buildtools/jam make all cd /opt/haiku/generated.x86_64 pvs-studio-analyzer trace -- /opt/buildtools/jam/bin.linuxx86/jam \ -q -j1 @nightly-anyboot pvs-studio-analyzer analyze -l /mnt/svn/PVS-Studio.lic -r /opt/haiku \ -C x86_64-unknown-haiku-gcc -o /opt/haiku/haiku.log -j12 

рд╡реИрд╕реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдордиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдирдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рддреИрдпрд╛рд░ рдХрд┐рдП рд╣реИрдВ: рдбреЙрдХрдЯрд░ рдореЗрдВ рд░рдирд┐рдВрдЧ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ ред рдпрд╣ рдХреБрдЫ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдереИрддрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддрдХрдиреАрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

Uninitialized рдЪрд░


V614 Uninitialized рдЪрд░ 'rval' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред fetch.c 1727

 int auto_fetch(int argc, char *argv[]) { volatile int argpos; int rval; // <= argpos = 0; if (sigsetjmp(toplevel, 1)) { if (connected) disconnect(0, NULL); if (rval > 0) // <= rval = argpos + 1; return (rval); } .... } 

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

V614 Uninitialized рдкреЙрдЗрдВрдЯрд░ 'рд░реЗрд╕' рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдЖрджреЗрд╢ реи commands.cрей

 struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; socklen_t ai_addrlen; char *ai_canonname; struct sockaddr *ai_addr; struct addrinfo *ai_next; }; static int sourceroute(struct addrinfo *ai, char *arg, char **cpp, int *lenp, int *protop, int *optp) { static char buf[1024 + ALIGNBYTES]; char *cp, *cp2, *lsrp, *ep; struct sockaddr_in *_sin; #ifdef INET6 struct sockaddr_in6 *sin6; struct ip6_rthdr *rth; #endif struct addrinfo hints, *res; // <= int error; char c; if (cpp == NULL || lenp == NULL) return -1; if (*cpp != NULL) { switch (res->ai_family) { // <= case AF_INET: if (*lenp < 7) return -1; break; .... } } .... } 

рдПрдХ uninitialized рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдорд╛рди рдорд╛рдорд▓рд╛, рдХреЗрд╡рд▓ рдпрд╣рд╛рдБ uninitialized рдкреЙрдЗрдВрдЯрд░ рд░реЗрд╕ рд╣реИ ред

рд╕реНрдерд╛рдиреАрдп рдЪрд░ 'рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд' рдХреЛ V506 рд╕реВрдЪрдХ рдЗрд╕ рдЪрд░ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдкреЙрдЗрдВрдЯрд░ рдЕрд╡реИрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред TextView.cpp 5596

 void BTextView::_ApplyStyleRange(...., const BFont* font, ....) { if (font != NULL) { BFont normalized = *font; _NormalizeFont(&normalized); font = &normalized; } .... fStyles->SetStyleRange(fromOffset, toOffset, fText->Length(), mode, font, color); } 

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

V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪреЗрдпрд░ .pp 27

 int8 BUnicodeChar::Type(uint32 c) { BUnicodeChar(); return u_charType(c); } 

C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдмреАрдЪ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ / рдЬреАрд░реЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдХреЛрдИ рд╕рдВрд╢реЛрдзрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдирдпрд╛ рдЕрдирд╛рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рддреБрд░рдВрдд рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕реА рдмрд╣реБрдд рд╕реА рдЬрдЧрд╣реЗрдВ рд╣реИрдВ:

  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪрд╛рд░ред рд╕реАрдкреА 37
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбреЗрдХрд░ред 49 49
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪреЗрдпрд░ .pp 58
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбреЗрдХрд░ред рд╕реАрдкреА 67
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбреЗрдХрд░ .pp 77
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдиреАрдХреЛрдбрдХреНрд░реЙрдкред 89
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбреЗрдХрд░ред рд╕реАрдкреА 103
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдиреАрдХреЛрдбрдХреНрд░реЙрдкред 115
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪрд╛рд░ред рд╕реАрдкреАрд╕реА 126
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбреЗрдХрд░ .pp 142
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪреЗрдпрд░ред 152 152
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбреЗрдХрд░ред рд╕реАрдкреАрдпреВ 163
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдиреАрдХреЛрдбрдХреНрд░реЙрдкред 186
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪрд╛рд░ .Cpp 196
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪрд╛рд░ .Cpp 206
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪрд╛рд░ред 214
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪрд╛рд░ред 222
  • V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдмреБрдЙрдирд┐рдХреЛрдбреЗрдХрд░ :: рдмреБрдЙрдирд┐рдХреЛрдбреЗрдЪрд░ (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреЛрдбрдЪрд╛рд░ред рд╕реАрдкреАрдпреВ 230

V670 ized fInternal тАЩрд╕рджрд╕реНрдп рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирдЖрд░реНрдЧреЗрдирд╛рдЗрдЬреНрдб рдХреНрд▓рд╛рд╕ рдореЗрдВрдмрд░ 'fPatternHandler' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдЙрдирдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреЗрдВрдЯрд░.рдХрдВрдк 184

 Painter::Painter() : fInternal(fPatternHandler), .... fPatternHandler(), .... { .... }; class Painter { .... private: mutable PainterAggInterface fInternal; // line 336 bool fSubpixelPrecise : 1; bool fValidClipping : 1; bool fDrawingText : 1; bool fAttached : 1; bool fIdentityTransform : 1; Transformable fTransform; float fPenSize; const BRegion* fClippingRegion; drawing_mode fDrawingMode; source_alpha fAlphaSrcMode; alpha_function fAlphaFncMode; cap_mode fLineCapMode; join_mode fLineJoinMode; float fMiterLimit; PatternHandler fPatternHandler; // line 355 mutable AGGTextRenderer fTextRenderer; }; 

рдЧрд▓рдд рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдгред рд╡рд░реНрдЧ рдлрд╝реАрд▓реНрдб рдХреЛ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдХрдХреНрд╖рд╛ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╝рд┐рдирдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрд╣рд▓реЗ рдЕрдирдЗрдВрд╕реНрдЯрд╛рд▓реНрдпреВрдЯреЗрдб рд╡реИрд▓реНрдпреВ fPatternHandler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж #define


V523 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред subr_gtaskqueue.c 191

 #define TQ_LOCK(tq) \ do { \ if ((tq)->tq_spin) \ mtx_lock_spin(&(tq)->tq_mutex); \ else \ mtx_lock(&(tq)->tq_mutex); \ } while (0) #define TQ_ASSERT_LOCKED(tq) mtx_assert(&(tq)->tq_mutex, MA_OWNED) #define TQ_UNLOCK(tq) \ do { \ if ((tq)->tq_spin) \ mtx_unlock_spin(&(tq)->tq_mutex); \ else \ mtx_unlock(&(tq)->tq_mutex); \ } while (0) void grouptask_block(struct grouptask *grouptask) { .... TQ_LOCK(queue); gtask->ta_flags |= TASK_NOENQUEUE; gtaskqueue_drain_locked(queue, gtask); TQ_UNLOCK(queue); } 

рдЬрдм рддрдХ рдЖрдк рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рддрдм рддрдХ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕рдВрджрд┐рдЧреНрдз рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ:

 void grouptask_block(struct grouptask *grouptask) { .... do { if ((queue)->tq_spin) mtx_lock(&(queue)->tq_mutex); else mtx_lock(&(queue)->tq_mutex); } while (0); gtask->ta_flags |= 0x4; gtaskqueue_drain_locked(queue, gtask); do { if ((queue)->tq_spin) mtx_unlock(&(queue)->tq_mutex); else mtx_unlock(&(queue)->tq_mutex); } while (0); } 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╣реИ - рдпрджрд┐ рдФрд░ рдЕрдиреНрдп рд╢рд╛рдЦрд╛рдПрдВ рд╕рдорд╛рди рд╣реИрдВред рд▓реЗрдХрд┐рди mtx_lock_spin рдФрд░ mtx_unlock_spin рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛рдБ рдЧрдП ? рдореИрдХреНрд░реЛрдЬрд╝ TQ_LOCK , TQ_UNLOCK рдФрд░ grouptask_block рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдФрд░ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ , рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд╣реАрдВ-рдХрд╣реАрдВ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдерд╛ред

рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ mutex.h рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдПрдХ рдЦреЛрдЬ:

 /* on FreeBSD these are different functions */ #define mtx_lock_spin(x) mtx_lock(x) #define mtx_unlock_spin(x) mtx_unlock(x) 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рд╣реА рд╣реИ рдпрд╛ рдирд╣реАрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХреА, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореБрдЭреЗ рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧрд╛ред

рдореБрдХреНрдд рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпрд╛рдБ


V575 null рдкреЙрдЗрдВрдЯрд░ рдХреЛ 'рдлреНрд░реА' рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред setmime.cpp 727

 void MimeType::_PurgeProperties() { fShort.Truncate(0); fLong.Truncate(0); fPrefApp.Truncate(0); fPrefAppSig.Truncate(0); fSniffRule.Truncate(0); delete fSmallIcon; fSmallIcon = NULL; delete fBigIcon; fBigIcon = NULL; fVectorIcon = NULL; // <= free(fVectorIcon); // <= fExtensions.clear(); fAttributes.clear(); } 

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

V575 null рдкреЙрдЗрдВрдЯрд░ рдХреЛ 'рдлреНрд░реА' рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред Driver_settings.cpp 461

 static settings_handle * load_driver_settings_from_file(int file, const char *driverName) { .... handle = new_settings(text, driverName); if (handle != NULL) { // everything went fine! return handle; } free(handle); // <= .... } 

рдирд┐: рд╢реБрд▓реНрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдгред рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреЙрдЗрдВрдЯрд░ рдХреА рд╕рдлрд▓ рдкреНрд░рд╛рдкреНрддрд┐ рдкрд░, рдлрд╝рдВрдХреНрд╢рди рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред

V575 null рдкреЙрдЗрдВрдЯрд░ рдХреЛ 'рдлреНрд░реА' рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред PackageFileHeapWriter.cpp 166

 void* _GetBuffer() { .... void* buffer = malloc(fBufferSize); if (buffer == NULL && !fBuffers.AddItem(buffer)) { free(buffer); throw std::bad_alloc(); } return buffer; } 

рдпрд╣рд╛рдБ рдПрдХ рдЧрд▓рддреА рд╣реИред && рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрдЬрд╛рдп, || рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрд╛ рдЬрд╛рдПрдЧрд╛ std :: bad_alloc () рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рддреЛ рдореЙрд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ред

рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпрд╛рдВ


V611 рд╕реНрдореГрддрд┐ рдХреЛ 'рдирдП рдЯреА []' рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди 'рдбрд┐рд▓реАрдЯ' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдХреЛрдб рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╢рд╛рдпрдж 'рдбрд┐рд▓реАрдЯ [] fMsg;' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред Err.cpp 65

 class Err { public: .... private: char *fMsg; ssize_t fPos; }; void Err::Unset() { delete fMsg; // <= fMsg = __null; fPos = -1; } void Err::SetMsg(const char *msg) { if (fMsg) { delete fMsg; // <= fMsg = __null; } if (msg) { fMsg = new(std::nothrow) char[strlen(msg)+1]; // <= if (fMsg) strcpy(fMsg, msg); } } 

FMsg рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрдореЛрд░реА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрдЬрд╛рдп [] ред

V611 рдореЗрдореЛрд░реА рдХреЛ 'рдирдП' рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди 'рдореБрдлреНрдд' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 'рд░реИрдкрд░рдкреВрд▓' рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдкреАрдЫреЗ рдСрдкрд░реЗрд╢рди рд▓реЙрдЬрд┐рдХреНрд╕ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред vm_page.cpp 3080

 status_t vm_page_write_modified_page_range(....) { .... PageWriteWrapper* wrapperPool = new(malloc_flags(allocationFlags)) PageWriteWrapper[maxPages + 1]; PageWriteWrapper** wrappers = new(malloc_flags(allocationFlags)) PageWriteWrapper*[maxPages]; if (wrapperPool == NULL || wrappers == NULL) { free(wrapperPool); // <= free(wrappers); // <= wrapperPool = stackWrappersPool; wrappers = stackWrappers; maxPages = 1; } .... } 

рдпрд╣рд╛рдБ Malloc_flags рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ Malloc рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ-рдирдпрд╛ рдпрд╣рд╛рдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рдФрд░ PageWriteWrapper рд╡рд░реНрдЧ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 class PageWriteWrapper { public: PageWriteWrapper(); ~PageWriteWrapper(); void SetTo(vm_page* page); bool Done(status_t result); private: vm_page* fPage; struct VMCache* fCache; bool fIsActive; }; PageWriteWrapper::PageWriteWrapper() : fIsActive(false) { } PageWriteWrapper::~PageWriteWrapper() { if (fIsActive) panic("page write wrapper going out of scope but isn't completed"); } 

рддрдм рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЛ рдореБрдлреНрдд рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

V611 рд╕реНрдореГрддрд┐ рдХреЛ 'рдирдП рдЯреА []' рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди 'рдбрд┐рд▓реАрдЯ' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдХреЛрдб рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕рдВрднрд╡рддрдГ 'рдбрд┐рд▓реАрдЯ [] fOutBuffer?' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 26, 45. PCL6Rasterizer.h 26

 class PCL6Rasterizer : public Rasterizer { public: .... ~PCL6Rasterizer() { delete fOutBuffer; fOutBuffer = NULL; } .... virtual void InitializeBuffer() { fOutBuffer = new uchar[fOutBufferSize]; } private: uchar* fOutBuffer; int fOutBufferSize; }; 

рдбрд┐рд▓реАрдЯ рдХреЗ рдмрджрд▓реЗ рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ [] рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рд╣реИред рдХреНрд▓рд╛рд╕ рд▓рд┐рдЦрддреЗ рд╕рдордп рдЧрд▓рддреА рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛрдб рдЕрдХреНрд╕рд░ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рджреВрд░ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕реВрдЪрдХ fOutBuffer рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред

V772 рд╢реВрдиреНрдп рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП 'рдбрд┐рд▓реАрдЯ' рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛ред рд╣реИрд╢рдЯреЗрдмрд▓ред рд╕реАрдкреАрд╕реА 207

 void Hashtable::MakeEmpty(int8 keyMode,int8 valueMode) { .... for (entry = fTable[index]; entry; entry = next) { switch (keyMode) { case HASH_EMPTY_DELETE: // TODO: destructors are not called! delete (void*)entry->key; break; case HASH_EMPTY_FREE: free((void*)entry->key); break; } switch (valueMode) { case HASH_EMPTY_DELETE: // TODO: destructors are not called! delete entry->value; break; case HASH_EMPTY_FREE: free(entry->value); break; } next = entry->next; delete entry; } .... } 

рдбрд┐рд▓реАрдЯ / рдбрд┐рд▓реАрдЯ [] рдФрд░ рдлреНрд░реА рдХреЗ рдмреАрдЪ рдХреЗ рдЧрд▓рдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдХ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ (рд╢реВрдиреНрдп) рдореЗрдВ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдп


V591 рдЧреИрд░-рд╢реВрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд░реЗрдлрд░реЗрдВрд╕реЗрдмрд▓ред 228

 BReference& operator=(const BReference<const Type>& other) { fReference = other.fReference; } 

рдУрд╡рд░рд░рд╛рдЗрдб рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдСрдкрд░реЗрдЯрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЕрдЬреАрдм рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЕрдиреНрдп рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рднреА рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ:

  • V591 рдЧреИрд░-рд╢реВрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд░реЗрдлрд░реЗрдВрд╕рд┐рдмрд▓ред 233
  • V591 рдЧреИрд░-рд╢реВрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд░реЗрдлрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдпред 239

V591 рдЧреИрд░-рд╢реВрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред main.c 1010

 void errx(int, const char *, ...) ; char * getoptionvalue(const char *name) { struct option *c; if (name == NULL) errx(1, "getoptionvalue() invoked with NULL name"); c = getoption(name); if (c != NULL) return (c->value); errx(1, "getoptionvalue() invoked with unknown option '%s'", name); /* NOTREACHED */ } 

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

рдЕрдкрд╡рд╛рдж рд╕рдВрднрд╛рд▓рдирд╛


V596 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред 'рдереНрд░реЛ' рдХреАрд╡рд░реНрдб рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: ParseException (FOO) рдХреЛ рдлреЗрдВрдХ рджреЗрдВ; рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ .рдХрдВрдкрдиреА 659

 size_t Response::ExtractNumber(BDataIO& stream) { BString string = ExtractString(stream); const char* end; size_t number = strtoul(string.String(), (char**)&end, 10); if (end == NULL || end[0] != '\0') ParseException("Invalid number!"); return number; } 

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

V1022 рдПрдХ рдЕрдкрд╡рд╛рдж рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред gensyscallinfos.cpp 316

 int main(int argc, char** argv) { try { return Main().Run(argc, argv); } catch (Exception& exception) { // <= fprintf(stderr, "%s\n", exception.what()); return 1; } } int Run(int argc, char** argv) { .... _ParseSyscalls(argv[1]); .... } void _ParseSyscalls(const char* filename) { ifstream file(filename, ifstream::in); if (!file.is_open()) throw new IOException(string("Failed to open '") + filename + "'."); // <= .... } 

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

рдХреЛрдб рдХреЗ рджреЛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░:

  • V1022 рдПрдХ рдЕрдкрд╡рд╛рдж рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред gensyscallinfos.cpp 347
  • V1022 рдПрдХ рдЕрдкрд╡рд╛рдж рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред gensyscallinfos.cpp 413

рдФрдкрдЪрд╛рд░рд┐рдХ рд╕реБрд░рдХреНрд╖рд╛


V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'f_key' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП memset_s () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред dst_api.c 1018

 #ifndef SAFE_FREE #define SAFE_FREE(a) \ do{if(a != NULL){memset(a,0, sizeof(*a)); free(a); a=NULL;}} while (0) .... #endif DST_KEY * dst_free_key(DST_KEY *f_key) { if (f_key == NULL) return (f_key); if (f_key->dk_func && f_key->dk_func->destroy) f_key->dk_KEY_struct = f_key->dk_func->destroy(f_key->dk_KEY_struct); else { EREPORT(("dst_free_key(): Unknown key alg %d\n", f_key->dk_alg)); } if (f_key->dk_KEY_struct) { free(f_key->dk_KEY_struct); f_key->dk_KEY_struct = NULL; } if (f_key->dk_key_name) SAFE_FREE(f_key->dk_key_name); SAFE_FREE(f_key); return (NULL); } 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╕рдВрджрд┐рдЧреНрдз рдХреЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, SAFE_FREE рдореИрдХреНрд░реЛ, рдЬрд┐рд╕реЗ рдореЗрдорд╕реЗрдЯ , рдлреНрд░реА рдХреЙрд▓ рдФрд░ NULL рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдм O2 рдЕрдиреБрдХреВрд▓рди рдХреЗ рджреМрд░рд╛рди рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡реИрд╕реЗ, рдпрд╣ рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -14 : рдХрдВрдкрд╛рдЗрд▓рд░ рд░рд┐рдореВрд╡рд▓ рдЯреВ рдХреЛрдб рдЯреВ рдХреНрд▓реАрдпрд░ рдмрдлрд╝рд░реНрд╕ рдЬреИрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред

рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдЬрд╣рд╛рдВ рдмрдлрд╝рд░реНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдлрд╝ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ:

  • V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'рдПрдиреНрдХреЛрдбреЗрдб_рдмреНрд▓реЙрдХ' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП memset_s () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред dst_api.c 446
  • V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'key_st' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП memset_s () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред dst_api.c 685
  • V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'in_buff' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП memset_s () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред dst_api.c 916
  • V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'рд╕реА' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП memset_s () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред fs_cache.c 1078

рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рддреБрд▓рдирд╛


V547 рдПрдХреНрд╕рдкреНрд░реЗрд╢рди 'рд╢реЗрд╖ <0' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред Unsign рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рдХрднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ <0ред DwarfFile.cpp 1947

 status_t DwarfFile::_UnwindCallFrame(....) { .... uint64 remaining = lengthOffset + length - dataReader.Offset(); if (remaining < 0) return B_BAD_DATA; .... } 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рдХреА рд╕реНрдкрд╖реНрдЯ рддреБрд▓рдирд╛ рдХреАред рд╢рд╛рдпрдж рдЖрдкрдХреЛ рд╢реЗрд╖ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдХреЗрд╡рд▓ рд╢реВрдиреНрдп рд╕реЗ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдпрд╛ рдУрд╡рд░рдлреНрд▓реЛ рдЪреЗрдХ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдиреАрдВрдж ((рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд) рд╕реЗрдХрдВрдб) <0 'рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рдХрднреА рдирд╣реАрдВ рд╣реИ <0ред Misc.cpp 56

 status_t snooze(bigtime_t amount) { if (amount <= 0) return B_OK; int64 secs = amount / 1000000LL; int64 usecs = amount % 1000000LL; if (secs > 0) { if (sleep((unsigned)secs) < 0) // <= return errno; } if (usecs > 0) { if (usleep((useconds_t)usecs) < 0) return errno; } return B_OK; } 

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИ, рдЖрдЗрдП рд╣рдо рдиреАрдВрдж рдФрд░ рдмреЗрдХрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рдУрд░ рдореБрдбрд╝реЗрдВ:

 extern unsigned int sleep (unsigned int __seconds); extern int usleep (__useconds_t __useconds); 

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдиреАрдВрдж рд╕рдорд╛рд░реЛрд╣ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрд▓рдд рд╣реИред

рдЦрддрд░рдирд╛рдХ рд╕рдВрдХреЗрдд


V774 рдореЗрдореЛрд░реА рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'рдбрд┐рд╡рд╛рдЗрд╕' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред xhci.cpp 1572

 void XHCI::FreeDevice(Device *device) { uint8 slot = fPortSlots[device->HubPort()]; TRACE("FreeDevice() port %d slot %d\n", device->HubPort(), slot); // Delete the device first, so it cleans up its pipes and tells us // what we need to destroy before we tear down our internal state. delete device; DisableSlot(slot); fDcba->baseAddress[slot] = 0; fPortSlots[device->HubPort()] = 0; // <= delete_area(fDevices[slot].trb_area); delete_area(fDevices[slot].input_ctx_area); delete_area(fDevices[slot].device_ctx_area); memset(&fDevices[slot], 0, sizeof(xhci_device)); fDevices[slot].state = XHCI_STATE_DISABLED; } 

рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ FreeDevice рдирд╛рдордХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдХреНрд░рд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдХреЛрдб рдореЗрдВ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рд╣рдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЕрдкреАрд▓ рд╣реИред

рдРрд╕рд╛ рдХреЛрдб рдмреЗрд╣рдж рдЦрддрд░рдирд╛рдХ рд╣реИ рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╣реЛрддрд╛ рд╣реИ:

  • V774 рдореЗрдореЛрд░реА рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'рд╕реЗрд▓реНрдл' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред TranslatorRoster.cpp 884
  • V774 рдореЗрдореЛрд░реА рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'рд╕реНрдЯреНрд░рд┐рдВрдЧ' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред RemoteView.cpp 1269
  • V774 рдореЗрдореЛрд░реА рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'bs' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред mkntfs.c 4291
  • V774 рдореЗрдореЛрд░реА рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'bs' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред mkntfs.c 4308
  • V774 'рдЕрд▓' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрдореЛрд░реА рдХреЗ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред inode.c 1155

V522 рдирд▓ рд╕реВрдЪрдХ 'рдбреЗрдЯрд╛' рдХреА рдбреЗрд░реЗрдлреЗрд░рд┐рдВрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдХреЛ 'malo_hal_send_helper' рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреАрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 350, 394. if_malohal.c 350

 static int malo_hal_fwload_helper(struct malo_hal *mh, char *helper) { .... /* tell the card we're done and... */ error = malo_hal_send_helper(mh, 0, NULL, 0, MALO_NOWAIT); // <= NULL .... } static int malo_hal_send_helper(struct malo_hal *mh, int bsize, const void *data, size_t dsize, int waitfor) { mh->mh_cmdbuf[0] = htole16(MALO_HOSTCMD_CODE_DNLD); mh->mh_cmdbuf[1] = htole16(bsize); memcpy(&mh->mh_cmdbuf[4], data , dsize); // <= data .... } 

Interprocedural рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдЬрд╣рд╛рдБ NULL рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдмрд╛рдж рдореЗрдВ рдореЗрдореНрдЪреА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ dereferenced рдЧрдпрд╛ рд╣реИред

V773 'inputFileFile' рдкреЙрдЗрдВрдЯрд░ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред command_recompress.cpp 119

 int command_recompress(int argc, const char* const* argv) { .... BFile* inputFileFile = new BFile; error = inputFileFile->SetTo(inputPackageFileName, O_RDONLY); if (error != B_OK) { fprintf(stderr, "Error: Failed to open input file \"%s\": %s\n", inputPackageFileName, strerror(error)); return 1; } inputFile = inputFileFile; .... } 

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ ред InputFileFile рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд┐рд╕реА рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕реНрдореГрддрд┐ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрднреА рднреА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рд╣реА рдврдВрдЧ рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ - рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ред

V595 nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'fReply' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рд▓рд╛рдЗрдиреЗрдВ: 49, 52.

 RPC::CallbackReply* ReplyBuilder::Reply() { fReply->Stream().InsertUInt(fStatusPosition, _HaikuErrorToNFS4(fStatus)); fReply->Stream().InsertUInt(fOpCountPosition, fOpCount); if (fReply == NULL || fReply->Stream().Error() == B_OK) return fReply; else return NULL; } 

рдЪреЗрдХ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд┐рддрдиреА рдмрд╛рд░ рдбрд┐рдлрд░реЗрдВрд╕ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВред рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ V595 рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдХ рдиреЗрддрд╛ рд╣реИред рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ fReply рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЦрддрд░рдирд╛рдХ рдЙрдкрдпреЛрдЧред

V595 nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'mq' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 782, 786. oce_queue.c 782

 static void oce_mq_free(struct oce_mq *mq) { POCE_SOFTC sc = (POCE_SOFTC) mq->parent; struct oce_mbx mbx; struct mbx_destroy_common_mq *fwcmd; if (!mq) return; .... } 

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

рд╡рд┐рд╡рд┐рдз рддреНрд░реБрдЯрд┐рдпрд╛рдБ


V645 'strncat' рдлрдВрдХреНрд╢рди рдХреЙрд▓ рд╕реЗ 'рдЖрдЙрдЯрдкреБрдЯ' рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реАрдорд╛ рдореЗрдВ рдмрдлрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХрдИ рд╡рд░реНрдг рдЗрд╕реЗ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред NamespaceDump.cpp 101

 static void dump_acpi_namespace(acpi_ns_device_info *device, char *root, int indenting) { char output[320]; char tabs[255] = ""; .... strlcat(tabs, "|--- ", sizeof(tabs)); .... while (....) { uint32 type = device->acpi->get_object_type(result); snprintf(output, sizeof(output), "%s%s", tabs, result + depth); switch(type) { case ACPI_TYPE_INTEGER: strncat(output, " INTEGER", sizeof(output)); break; case ACPI_TYPE_STRING: strncat(output, " STRING", sizeof(output)); break; .... } .... } .... } 

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

рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЦрддрд░рдирд╛рдХ рд╕реНрдерд╛рдиреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА:

  • V645 'strncat' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ 'рдЖрдЙрдЯрдкреБрдЯ' рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реАрдорд╛ рдореЗрдВ рдмрдлрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХрдИ рд╡рд░реНрдг рдЗрд╕реЗ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред NamespaceDump.cpp 104
  • V645 'strncat' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ 'рдЖрдЙрдЯрдкреБрдЯ' рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 107
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 110
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 113
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 118
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 119
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 120
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 123
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 126
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 129
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 132
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 135
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 138
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 141
  • V645 The 'strncat' function call could lead to the 'output' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. NamespaceDump.cpp 144
  • V645 The 'strncat' function call could lead to the 'features_string' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. VirtioDevice.cpp 283
  • V645 The 'strncat' function call could lead to the 'features_string' buffer overflow. The bounds should not contain the size of the buffer, but a number of characters it can hold. VirtioDevice.cpp 284
  • V645 'strncat' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ 'features_string' рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реАрдорд╛ рдореЗрдВ рдмрдлрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХрдИ рд╡рд░реНрдг рдЗрд╕реЗ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред VirtioDevice.cpp 285

V792 рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд 'SetDecoratorSettings' рдлрд╝рдВрдХреНрд╢рди | рд╡рд╛рдо рдСрдкрд░реЗрдВрдб рдХреЗ рдореВрд▓реНрдп рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рд╢рд╛рдпрдж, '||' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред DesktopListener.cpp 324

 class DesktopListener : public DoublyLinkedListLinkImpl<DesktopListener> { public: .... virtual bool SetDecoratorSettings(Window* window, const BMessage& settings) = 0; .... }; bool DesktopObservable::SetDecoratorSettings(Window* window, const BMessage& settings) { if (fWeAreInvoking) return false; InvokeGuard invokeGuard(fWeAreInvoking); bool changed = false; for (DesktopListener* listener = fDesktopListenerList.First(); listener != NULL; listener = fDesktopListenerList.GetNext(listener)) changed = changed | listener->SetDecoratorSettings(window, settings); return changed; } 

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдСрдкрд░реЗрдЯрд░реЛрдВ '|' рдФрд░ '||' рдРрд╕реА рддреНрд░реБрдЯрд┐ рд╕реЗ SetDecoratorSettings рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЙрд▓ рд╣реЛрддреА рд╣реИ ред

V627 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред Sizeof () рдХрд╛ рддрд░реНрдХ рд╡рд╣ рдореИрдХреНрд░реЛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рддрдХ рдлреИрд▓рддрд╛ рд╣реИред device.c 72

 #define PCI_line_size 0x0c /* (1 byte) cache line size in 32 bit words */ static status_t wb840_open(const char* name, uint32 flags, void** cookie) { .... data->wb_cachesize = gPci->read_pci_config(data->pciInfo->bus, data->pciInfo->device, data->pciInfo->function, PCI_line_size, sizeof(PCI_line_size)) & 0xff; .... } 

рдЖрдХрд╛рд░ 0x0c рдорд╛рди рдЖрдХрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рд▓рдЧрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ ред

V562 18: 0x12 == IsProfessionalSpdif () рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдмреВрд▓ рдЯрд╛рдЗрдк рдорд╛рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЕрдЬреАрдм рд╣реИред CEchoGals_mixer.cpp 533

 typedef bool BOOL; virtual BOOL IsProfessionalSpdif() { ... } #define ECHOSTATUS_DSP_DEAD 0x12 ECHOSTATUS CEchoGals::ProcessMixerFunction(....) { .... if ( ECHOSTATUS_DSP_DEAD == IsProfessionalSpdif() ) // <= { Status = ECHOSTATUS_DSP_DEAD; } else { pMixerFunction->Data.bProfSpdif = IsProfessionalSpdif(); } .... } 

IsProfessionalSpdif рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдмреВрд▓ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ , рдЬрдмрдХрд┐ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо 0x12 рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

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


рд╣рдо рдкрд╣рд▓реЗ рд╣рд╛рдЗрдХреВ рдмреАрдЯрд╛ рдкрд┐рдЫрд▓реЗ рдкрддрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рдЪреВрдХ рдЧрдП Java рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП PVS-Studio рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рдереЗред рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкреНрд░рдХреГрддрд┐ рдРрд╕реА рд╣реИ рдХрд┐ рд╡реЗ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдЖрдк рдЙрдирдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХрд╡рд░рд┐рдЯ рд╕реНрдХреИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА , рд▓реЗрдХрд┐рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЖрдЦрд┐рд░реА рд░рди рд▓рдЧрднрдЧ рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдерд╛ред рдЗрд╕рд╕реЗ рд╣рд╛рдЗрдХреБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, Coverity рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг 2014 рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рд╣рдореЗрдВ 2015 рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдореАрдХреНрд╖рд╛ ( рднрд╛рдЧ 1 , рднрд╛рдЧ 2 ) рдХреЗ рд╕рд╛рде рджреЛ рдмрдбрд╝реЗ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрд╛ ред

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

рд╣рд╛рдЗрдХреБ рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рд╕рд╡рд╛рд▓ рд╣реИ? рд╣рд╛рдЗрдХреБ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдкрдХреЛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ рдкрд░ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред



рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: Svyatoslav Razmyslovред рд╕реА рдФрд░ рд╕реА ++ рдореЗрдВ рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдХреИрд╕реЗ рдЧреЛрд▓реА рдорд╛рд░рдиреА рд╣реИред рд╣рд╛рдЗрдХреБ рдУрдПрд╕ рдХреБрдХрдмреБрдХ

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


All Articles