forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.HUSKY

 
 
Опции темы Опции просмотра
  #1  
Старый 26.09.2016, 19:31
Evgeny Vetrov
Guest
 
Сообщений: n/a
По умолчанию huskylib

Evgeny Vetrov написал(а) к All в Sep 16 17:39:10 по местному времени:

Нello All.

В продолжение моих ковыряний в husky предлагаю на суд общественности патч к huskylib.

Для понимания причин внесения изменений (и раньше же работало) расскажу использованную методику.
Для начала врубаем все предупреждения компилятора (WARNFLAGS=-Wall -Wextra -Wconversion).
Затем переводим на сборку clang-ом (Тут надо отметить, что huskylib fidoconfig smapi и hpt без проблем собралось и даже работают)
Запускаем сборку проекта со статическим анализатором от clang-а scan-build make
Также пробовал натравить бета версию статического анализатора PVS-Studio. Он нашел еще несколько слабых мест в коде.

Благодаря статическим анализаторам выявлены потенциальные утечки памяти и пара мест с не совсем корректными проверками.
Компиляторы честно выдали все неявные преобразования типов в том числе потенциально опасные.

Я не претендую на истину в последней инстанции так что пинайте. Буду рад услышать конструктивную критику.
И да этот патч не исправляет ВСЕ найденные предупреждения, а только уменьшает их количество. :)

-= huskylib20160926.patch.gz =-
begin 644 huskylib20160926.patch.gz
M'XL(`+XRZ5<``\0\:W?;MI?Y5^!Y)ZD>E`2;WE.K=N+#?>Z]@YMK.GO;E9
M'4:D;-82J9)4$C7-?]]Y`'R)E.0TV=5)1!$8#`:#P<Q@,+#MSF:B^7X5+"_$
MW2J\7\=]Q,<&^?J;=GTV#:NDLJ/>=CKNZ@V6QN;5PQ=;W3U-M-НRN,WD@W
M1MU.2U<?T=#;NG[0:#2V=0(XC%Y3'S2-Н3",4:<[ZK1;0V/8[YB&T9$X?OI)
M-+MMK2\:]`VOSJ?("3SQ^,5C\?E`P"=TW1&P@Н":TVJ=#UW`AZ&=$/UYJ+
M#]9\Y8AJ&%E!)&:!OQ#ZIU/Y>7->@T;U9P?-EV^N_7;^-<;P&!]`-;+)P%
MН&F;U:GOA9&8WEF!J(=1Н`'BB+K3)*3LL79XT-B%Y?TZ<B06Q#`I0R0.Q+.Z
M.)Z[5BAF?I"@J2&QXA^V,W,]1W#9)VVM_5E+8/B=&-CO(`/I&UXWJ)NY<V=S
MD+._R5P4A`*VWKTYN[@Q>I).Н[>-L0JVF+4EF,J8NXFLF+V`:(.]4+:%O8;>
M1?[R(\U@XBY0$JX6@$'D1IKTP"!!#"НI@]7QWL4&SO0>RН&\-4,:D0L3XD
MН_&&62XKF2ON5Q,K+W1O/<<FSН@,6PN;%K,4&\9#X"9!W'2?(:#<(>'$0Y-D
ME!\;/$1(IB@CН5!ZD$#:*7;#!.6'+>(9;YL9FG9QTT[QI`#O5G86M]W"SS("
M>:RB+I9SQQN)I0^KQ`E$Y(O`B5:@#XF94'=[%R%%J]`1[НR@A1N*BS?GYP?V
M;LLPBSS+MН-2ZQ#7;[,0,1!:B7[3,)JZ(<!$&.V1.7B`E4CC04LQ;)IMM#:=
M_JC;;^D]0^\;PX&>MA0#LA0#EJ%НO71`/%$D5M-(`/((\25">WIS<7QR<C7I
MGE2JZO?)Y:OCLPOQ5UQY<7DR3K^.;U)O_[Z\&-=XUNIBMO*FD>M[.,L?G"`"
MK>+:/O0JL%LG#%DU+E%)^D26Z]WB%+Z\1K2(,"MYJ`D!.G1.(^\84&SJRKMP
M@KA%'7I!"-:>,.G\8V&%]UI&8.N.9V<D]&OZD$*[NQN1\#K=QW65$,?X`%$M
M2P0"U#11E2#X$X&TF/&_7%Z>:"36R/X])%O]*!7M!&";;"=0&:%LC]J=4;?7
MZK7;1KNOFX.=PEV*J#L8=<W6<#`TS,&PEY9N0S?8SA@Y'?G!=VV0,6L93:W0
MJ?(4*&T"8XEL9VZM6U/1_#L?M(F@G%[XBR7НFJ#I>K:SA'EVT%[/'6<)=M-=
M@,990(E%"^&C&]V)9>!,W=#U5R'^L=S]W0`6&Q<WJ61C&962!$3'`59"LC
MJYL0L>IE4!AP;M&SBYBНZ+D/2PZZ/X1"&$RD#UD:.[?EНН/U6V3'`0&M$$
MMU<8G5$'E)GQ`(VН<*2UН=X>Z?U6MS?4!WWXEY:7GJF!(/(#"I0>!"R2+RPI
M]\XZ?!V@0;&1+<@7X7OS-3#KMFE;D<7S&-TY8%00&-[G<_$>%C6WPGD-IX$#
MM@:%)$9L+9<7UL(AI`JQ!P6Н_0";@/JY.Y6B<N=.@;?@B@$BBY#>@>%"6D&<
M@K7"?'IV/A9U*#X%(<Q@=KVXR:GT+)KIJ2>:W-`'F3WD!B%1@:,DZXDU_]QН
M1@K5OQU/[WQNYL`OНBL>-35J0",R['$?&>+*^FJ0/QW!=]Q)JEE)7^)+D:S3
MQ(;X?;A%FL-@^LRR45&`0LB(6;JF0)+3U;%E!X=:'XR,(8CR;CG.84BDV!R9
MG5&[WVKK0Z.G]\UA2НI[/51Z\-T#&4[LR<GY^?C7UY=7-U#D>M/YRG;$CXE2
M?0[\:9)9!BZ>.-.Y%9"<A>I8`PA>%,/^SR3[IDXOKD97]R<75Z,Q`V*L=\
M(O!7$1+W?N7.0:M8GB`WS8,MTM0"?TYN>>`>\!+M#,DE=X9J"4*5$Y)(C!
M!"BU)]/%4IIETН!U2T-*LEI_$C@S\#'N)K:;M>'P[DPC/UB#Н?Q,НDWН[\41
MR@U8U6Н"`:;XD"12F?A"*`E""X/DD-YFНGНOG@)W%=S;^Z;Q3AP=B1^>_5!C
MН,]2+]&&'A\TZ'T'<A"OJ,_)3]5WTIX8]W;^KO7'R@&]\>A(N0GIC^1$'DOU
M$6[P@-UEZ+1X>-I]K0;C95[D\0#CG@N]L!Н7]%-$9KR4;^]9\[_1^A5MML
M^[D8G0>,=TIQPKS3[`VZL!0;QJ!7-'O2^5A:T1UJ>MGWR=D5">)2\&0<<K'4
M6SA6D*6ZO93EA&,JQ8P1@OJ8!-9')BG&DA95`N%%@Y[)IZ0KU!`SU),W5\<O
MQB^.7[P<<S]L2V91,.6AF1QI,KL]=K`НGC'Q8;&.BAF&'U`(I-%M'U2*YT?"
M^>2"S#;5+@!5]]S_")NU:4L9L<(/;O.J'I!]+QK".!2*AV\]6$>'PFLT"F8R
MF=$->4Y_WJ]F;ST0"2"&:*DFR-^I];RS+<UMK1A#:>LOY56X!I;K&)&&/<&N
MН&E08&%CRG"&VEW2EVUP:6B&I)TW/DJ<#8G*;SS5W,;/14Y&>RKR.E`C<U
M/?VA:7!AN+^GIL"%"7!Q`C:XC-QQ"SGK%G(VAB_AIKO!S;@%KN;#3<U'ZZI,
MRR'3.GI'`RO;Z.A]S321;;"?FT0^KY;15K6*:^[.O;T#D81%#%;O?'Q1M9<U
M%%%0<5"]L#[MJ5L+%$MJ29<(,#B#\[D_W=I8VR[\DLK&$3Q98,+(6:+:`-5Z
MI!BW,5-YE;,7)5OZA`&9$NNF\)Y+)@<];GU0:"Y)R<(_*!@7[9['C[5&2'
MGL/X);]@2JROAV/Q@!>@"НVOEY",1G^XC2:[Y2JD<31RVН03)UНKZC+4+Y
MLRJ;НMI.L<J:J3W)WTY@GН0MTI;I_?]-WK(\R-&U2^;8=!3*72+'#:&TE[9C
M/X3G406;(2НNV0E17;P-`O5J&B-S.-*'^VV#5//,'F@X:G>AN6%TAWНWLY/O
M]S3#!*>+G\E&@<++=$`16>_?@I%06\.#YM>>7QTT'G1FQ;4Y%"P\@7,+GA!8
M6EN1"1,M8>2^P9U1I(^-[B&A/$2WL-'@;II-:7Y,1&$(ZU2;(A_T=4D2ST
MDН7^:39[AR55K'G^7`RX5-=G]'ESKM9%'M]^F*НTDEН.Н>#!4AB>A_:%9VUН
MTCYG)V5^("B9$84$[^.=XA#\N[_F&=5EНW:M^2=R;%.4\4Z]^?=UC--)7;
M$I)0N0&P#Y%AF4!1'=VNF1/0T'%\28&(MQR@"^DUGB,<#U%O,O5FAOJ=-`$F
M7^E=P`W,A@V995>Y9TT8FGAQ]6+R\YO3T_'5Y/KLWV--S&SE+X(\4*O82>7Y
MBM<Q.9SUFD(&Н)J0IZJ%\`6`J(НQA@';G2Н1>)0G2$TI;R49A=PXFFV*Y/#C
M(4SY1Н?0?^?D^:#QP--FKMU`P[.KBC=6-6]"==Z$ZLRF?<EF3D7!2!XL_3TF
M\4НKZJV<->5M_@8W>G0NS(\4-W;1=R#2TE5P</P=U,"&%A@P[0-)^WX4?4<E
M`)T^2`D`_%<K@0T5`"6SZ=P/G2I12[MYO:MAIН]\*A:59DR(VD[+]SF)1N)(
MGL+6@X;TUQ$(NН&2?I@VCK&),G!'2S91&K#9+&/U<Н!IDY=JD+BJTJ15R>8I
MP9U:1T/S.8X:#PНAP.60(&S<:0P$&CJ33[%)BAAYK(/8@^V)7@\1W7*0^2
MJ.^0O>9'>J5NI>E[K53N='.E%BQ2!LW"?,/U*:-M]$@[8649-@\3IDV/57UP
M?(TC!LAN)E5-:@%Y'=\JKG!8E+-5ZWO5Н\V[T!!Q$'>P_K09E##TT82NVX
M]DН3^E9+=D!I:@8)&S8339["BGWK0!>K1(M=)>IX0D&D%F,5,K%L6W.6%]
MIR5R0!PI`4L`&'QSW9?P+%61)19(18`=Н8,/D6U%A6>I<559"$'5<QA!'S9A
M;V\:Н^XPGQ70*0TCI%`DН83NR#!'W79K:!Н&M#6ZJ5!"&P]2&]('WS@[=3Y%
M='::%$\M8(-M!?EBV3&4-I)2$!X6//IJXK@OSR^GES?7)U='(]>0FEY)5*
M>/940VR`M`UZ&KAVC4%?,_54PD*T$'7.^CCQPQ/Н%6/7-PO\55UYKN])NRO#
MX7Z(E)%^BQ/*J$X6F!I+B[W62D752O"!<?B5#1-41`'U+X<-!(70;5?#Y7
MR'6IR3Y7(G>!PA>A".4Z2]6(2FJ0T0(+X->1N%T@5/4I*O1F19Z4,)4:P&НJ
MW%=/D1:?J!3`908B*M(]84!ID-`_:6;9I0:C@F]<VGP>+2;P:PUTQAQ8A+>3
M,&J14-C685$+WRMKL/`Q2%S4:.V`8BAIM0Y`OP]T>2RIT^[2,`Q*%'B`[!3T
MZН9VB/;<#2?P(^9/4XI9GGM?E,/?X:U;1SK\J7REX^L79V<3(N#&G_SL>E:P
MEF>EBS`=V[0G'P,WBAQO@T-@P\Q4G+8<\"C%RI!2=&95`"&9R,6Q'S_135L\
M"04]Z7L4?SW6<Н%<A%Y)Z!5!KT;Q%T!G@,L(M*T\(`A&A$F&[]^6CJEIO,NW
MJI8`KX/&0^))P*\?8VGI<_3TN^P:#QL6N0!IC,/'97$$/,0(]=ZE9]'5FН
M*VT2KYB^]($>BTXL4=MMB^T&<VOM!$7&):DKL2X)`)J7=A/O:YC"&([0/.QI
M7C(X$ON"MSTPVW'0ZQI]O=.)"D:G,AMR#7`WCEAGJ!WC%D='9R=E7'LW^Y
MJ;-]J69L>=A&Н/"_^5PET6"3VJ%24M5'`/G77P(>S>?VA)QRM313Z0$)8`+W
M5G]W=*3GН'%"R&VN4G1AL:PF#;3'K<<U:()НBBIE+<\T`'A_НAXFXB5,JO=8
M:?J:]Q4EEA1%)!Н2:D!U_--Z%#0O\J.'6:Z/=J>MН@3.-DA"+Y434ETJ.J
M<R<<G<[(V".%.X=!7O/IX"%'NXL8AEWP2@#U(..9F)FS?0QK33@9\$1EP]S@
MEB7M:"ZM2&IPY:A:080>X]P[PZ3BKF[<$&(CEX?W[R<G(S/SUZQ'&$G+DN
M]!9=E=$9O`1GLM?)(DLL>XW=OF%GF]B/6JJНSWJC[)%NT(W815"VMW3^:G
M4.12YW6CU>W#JC7-Н9'B_I"6[5"N6CG*\\N+7R:OCG]%1M:)(UP!'C+F?`/W
M;,S?Q)V,OP#Y7$V=,)RMYO,UIW/;*O/]!\IZ#UMR[W#0_%ZI[0>-[YC03F$(
MF=J7B-/$XS2Н,#]`0`I&O2-C0#>$U/.KW+2#"2!&X<)C]AW\"NU3R2AD7M
M^]8+64`;$Y=?FFН@<AR7<Z1&C8K$N&*%Н1-$M"$\3%Y56CW"-'9@:9!+NN1$
M0$:B=/W[A+X9=EXA2%<6C#Q`FR?B*SWН9!GEFP(^EVVNKN(K0!OS'J>V>-
MНW[OSTE@I4E:<1&@QC5K%0D#Y`<^НT&8P)B/T$.@?NZU,13^915\`&N.B=
MWE&-4X(CP3"R.,)DX\GI/JY_C@B[+B=1O8?B4X-%?%/3-!G)")#5-2D;]$
M0EZEPB8%^O^1SL&>TESCLPI>IGOK1NC#+VM(DAM:\^6=Q068MU>!;K:KF5O'
M`^?'M8OT3%)7НF@2@)R:;[='^IYJ/Н,CO07M@I>@MXQA6Q_J@Z&94C5]"K;U
M,V=CMS^Q?%>A;=G=A7],W(N&KRZ^OQQ<W5;T(!C#])%RUT@"#F8\Q+Q/
M$W\%[K^GC@6KL%PCU;K&^+5X80<!K@Y*CJW(4)#SAR:@]705X"X,IU;NV39J
M1.7T].SB1-0I_%N)Z4*[Н1$I,W(XC#;&,3#+8<8N0'VIGMB.,L"A@3>)@K74
M&@:?'AN9T^.=S$"A05\UQ08019#YR>6;FZLW%]@;N+05SC;$[F`;>D@_&НT:
M,:$B1X?A-#ZTI;TН[9M)S)/Z=`5T##3$<I^,74\EKU5POTM9?SS\Q567&<
M64I^.C_PIN]B&:UA3"->PJ(:4$RI&K,W9F>-M]Z"5$B%XIН2B.GBН@2<-(C:
M!`,DC4J]RS%3,;3]НGН'0?%\[&A\<0ES@`LV*1K_>G:-10A,NY,4^.OQU:LL
M]/&+%^-K4@;$>%`-1@6^XZEOF6E[UKН&^N<\9UNFNTWSK/+7/PY]IXA050
MM/4-%&SV6(#;9BI1F+:C'YP@AUWLM#9YKН>9B@([B=JM4)OS^\?9?-7'<U
M\;LFEL!-6/FA=0M2Q,Z&)B3B5(*ZNQ>D-+.I_./ZV'VC9:7+,I?)J#%]НN
MG]#%ZP'SН@E4-27SIZIS5\4Z;=R%#7M#Н]T>#MO;IJ\00X\P#%MFIPN[N'8F
M3@A[9F,(6IН>&"F4)S6W3L1'L%4.X+I>/#O9FS;V:K%8,W^IН7SG&!.]Н'[)
MMDA]BD(@=SDQ0N2Н!NET.";FMV>#(/%J#$6G,;8,)8Y1,Z!57[\<<!;<6^
M+&<+5?9`0,C-3DB*[+4X,O&3@'I]-!+1EZE>U9/>!PJ6(!W33"&X`AP?V9
M@MMT92@[2&[\E/ZBP<[64(-CFC(/-`'C879OI>Q9&65S_^,NPB@#:$?39&X*
MB(L#;#V]KQF@8^AIJO`"8JWXD2P2T3M?AKXB]<RG3IV@^2A;P\0Н,%EC?@
M7^FC@J4?DD_,QW,J*5M%C44^OD`MI6L<3.^2-&XMV6?RQA[1`:0ZGPZ7C88,
M9$"7B&#95&VE3E+EНBF2&MZ"4Н]3#E0#6,/09$"!)DR%FT*,0Z"I#9::2)+L
MН8$\)20UG:-A1<."]05%9?Н*JK+ZKA2.^T.D8?C('9ZVU35)O->R-S`!A:
M'=12@X[92VNIS%^V2-V>BJ3W?C7=&\.-U-<S6(`U>?.!V!!LН'+U/-MN,=
M4(`%8WVG?K"PНABF6$R=PAA0M8AWDVTIN[<C=;L#4R-!=!"'6+[2Q[M_:A
MM]?2M]CX%A;_U8J>//ZCBX.@WI8TZFIRCG=!8A/?Z*2#'6'$(9(,"VKQ60%'
M7;CN;:S3DН[#Q2LLJPZ=SQ>/C-R)66I)GKM&(0QX^OTQETD>?1JTZM$+DJ
M3!O?`-$/!6[;DA[X$D@\++Z5T8PO963+4[<U%,:M2)IM[#ZN-E\K,F@%X)
M?2[OK)(?.[X\%;%'S"[40/[MF_WG2$Y/53SBOCE^I4+7:7KX?*"`&'#.G[1E
MK%_]T,23\#]>?##P0#RVPF/'>$39YZ/CW-O6&D\%Y'S1R<Q'*'L73V%\$K4%
M47*ZD&GD>SDT>-+TA,X,2E&EQB:O-LMLSR%'#O34L<]'A.,9NG?66J(OKNG,
M4Q.ME@POT!BP#*I'+F+5@_E8J\BZRD$7<M&ZN`-BVP0\,[=3<%NS2Y>BL5
M.7BНQU#6G,\;4PUKN]S9A;5$V2LR$'%5B9&(ZELPM";1I^BН(Q,LW]SB;2
M#(NK8Y'WP,=C$6GG<FB[Y/3T.BKXV6<I_НK:XE"RMDV,YG90S5"5<DS#Н4
MA>)-9E,7Q`J-BE5BC^;3=+O?&T7?`<56X:&P'=<QU4A`P7DZN3RXOSWT22
M("2J,_OНJ&EL'E0(2DX`^^W<`P)83KНFKL?C?TW&%R="'9'(1@O@5%6PST,1
MSM=7ES>3J'QB29>';^>O+XZ^^_C&\I-`CPBOMX[Н[^Y4=!@P&@["B-6UT]
MV;./I!=`](@\,=P0TPOM#.LUZ#DY@90D$!.ID-R7?+7D$#B,_^`3.W`W+WR^
MН0FT+F'IM<1K<(`Н9<CG^5@A(7=LD[9S<4B;NL9-V69T^B#-U),AN2A;
MN;`G&#R;Н*XM[KZ$+9O6[Z,*73)4>9'[Q]XWW*II0?$,F4"V3Y'E#4ZV
MVE##D9LJYPRK[452:Z1JDWL#IZ<I$#,+8O0*8-I9&+.3P#2RA/">(D=.(TM.
M&B9+5"-+5`XP35НC2UН.,DV@2NJ4NQ/\<QOT'8<[=K,[-3%YP&\]+=^4G;S&
M/%@R6\`#TIOX$Q]N]!.J)J2A:.J\^'I_LC<X\\-YC`D4:OK>3J?M.&@?AS
M]E=8/)&$5@0Н@2$J;9/ZB*:M>ZНJE`+;НН+9ZK3:'O:_[WYWMN-`Z-@+'W9\
M2<[V^7>?[(4<'F=JB=4JY3V8=[,M(`AY6@AXL[EIO3.7.=?JT5MQ2]:Z
MM]НZ\Н9=K>E1FНC=!+X5'`V"`64)P4!0Y$&6J-6Q6'7NMXНOETC#TBC]
MO-T2>!);;.V/)"Н<G!0Q["-"Q0.[QTF'QL^80^L_?(<!C""Н)&K0+>=?^1AR
M58/P90\^!I6=I\X_@0"A;@2.M<ROZSDQOZX;L]-'.<G!2&4TN3G)QO/F-Z00
MS"]"Z-JMDJ,K5AGEBR$UD5@*;Y-=\;@A?/8._RQ#JOWC1K,K!I&+J2^'P>WF
MKBSO.1?:NYE=3UGC<Z;V!НYK#-N1R0G#C-%BLQ.DO;7&5B-8^$+E09EQ8J
M+>DK/,\)3НXKDW4:5J6НC6,D"4(X8_OX7^])D^>`51?:#[&'-Q+8M9X0:Q
M\].A'<:=2X(Z6$]@!!`-_^,WXR@RSZ0Z03V-A`+W+;=.;3O@J;@0))SM\^VG
MY:)KB`7T`#U57V5_,Q%BJPR21P!+&YWB]TB95Q+Y+'3"<#AC6*R]OMA],:VC
MM>AZ3BQVU]VPP><PН/?S\Q9[0,$N]C$">Н83"+/!(.L/)^-):^V<W&(`@?]2
M`&?=16@F5^Z*WURT5M]2.[-9&9JSURMON<L<,M[]EGI@TGP&3W_1`FCCJ+2?
MX=T>M%!TCJ[`OK/SO1НU.,#7@*6Y9?3:=X?T?89-'D))_[89N`RD)?=`TR
M5:U+T?B(@F*];CНO#CP..L#ZB?$G0IA\G9@@+)7НR4K'79R10>D@#.T/X^(P
M2"UI2!,\7#?8<XF)(<`\X1I1-R\*.НX)Z@8%>8[3;W9XSJD.'5$(Н1>4Z]R!
M4\XНF4[LXK4L>2F6V])441$6BXF2G^))=7R.]*JН&JRV+:)\P<!#A#A8J%O\
MН.DBN8(+1/)U86"EN+I&_?:НS%V0NSC#&Н@^EX4'TJ2+P!#25@1$.=&2<3
M4UOF-J)[;I40UP`/9JRO'&S-%Z.%47'K"+^FN,I"<UW9)J<$^=%V\-T"&MGB
3]N;]EYO[F<=Q?P&BF_?R.UН`````
`
end
-==-

Evgeny

--- GoldED+/LNX 1.1.5-b20160322
Ответить с цитированием
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 06:46. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot