From dba09fcf5ed9538735f1f309bd4818a7d0c905a1 Mon Sep 17 00:00:00 2001 From: kichik Date: Fri, 10 Jan 2003 15:05:46 +0000 Subject: [PATCH] + IO works with new SetStaticBkColor + IO doesn't crash when a label has empty text + LangStrings now really start as "" when not defined git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2055 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/InstallOptions/InstallerOptions.cpp | 11 ++--------- Plugins/InstallOptions.dll | Bin 12800 -> 12800 bytes Source/lang.cpp | 11 +++++++---- Source/strlist.h | 14 ++++++++------ 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/Contrib/InstallOptions/InstallerOptions.cpp b/Contrib/InstallOptions/InstallerOptions.cpp index 1d559b4b..81a78781 100644 --- a/Contrib/InstallOptions/InstallerOptions.cpp +++ b/Contrib/InstallOptions/InstallerOptions.cpp @@ -542,7 +542,7 @@ bool ReadSettings(void) { pFields[nIdx].nFlags |= LookupToken(FlagTable, szResult); pFields[nIdx].pszText = myGetProfileStringDup(szField, "TEXT"); - if (pFields[nIdx].nType == FIELD_LABEL) { + if (pFields[nIdx].nType == FIELD_LABEL && pFields[nIdx].pszText) { char *p1, *p2; for (p1=p2=pFields[nIdx].pszText; *p1; p1++, p2++) { if (*p1 == '\\') { @@ -722,14 +722,7 @@ BOOL CALLBACK cfgDlgProc(HWND hwndDlg, break; case WM_CTLCOLORSTATIC: case WM_CTLCOLORDLG: - { - COLORREF color = GetWindowLong((HWND)lParam, GWL_USERDATA); - if (color) { - LOGBRUSH b={BS_SOLID, color-1, 0}; - SetBkColor((HDC)wParam, b.lbColor); - return (BOOL)CreateBrushIndirect(&b); - } - } + return (BOOL)GetWindowLong((HWND)lParam, GWL_USERDATA); } return 0; } diff --git a/Plugins/InstallOptions.dll b/Plugins/InstallOptions.dll index 8ec8962d48cef3cdd462a8167e7f1070f8af88d8..476060cb2ea4c5fa3b483546b0c5fb98a9876672 100644 GIT binary patch delta 3089 zcmc&$eNYtV8GrXYjzbPOgu_D+K@VjnptoP%9=m&-${Dp7PY)0bYKkOTPui$CFh=mO zM?UaM6MU@`tI@%v4JNj+g?6AiLPRa;(1@*H?f5}!Vpq>bn~70d!uHuciB2c~cDge^ z-sgRu-#(x3yIfOEQ_Y(KG2AB33$DCeax?wt)SfY1+t2r8z+P^_%gMk)gppW{|4hsv)?-4qi7<6;)&+?j zdLy&Ij?Dd`2AduQ#w!7vUa`1UO*zO$#lnH?_R6OfMX3zmQFY~tMZki-dd3MbHErck ztEbBw0O}>!M+}PPBCN0U1rn9IA)jLD!zcATaRL)DlZXMF8Bs5B*z z2&_ST-N0D}K-*GmOO0B>r65i2#&ql=2)s3RUAh(QP>0ngwGarEDHqfY6lKLaV=W~5 zf-#M-;a83KiA)@f+e8%OdvTkIZFs}@tYGyxc!U1xcf~gIVLd{unbHjTu=-R@FR&+ zeJSU@sW(4r2aEl2ixi*zFle5<0_T{XboeAQXe6V?vSflcNW`TjvhkjJ8nwy$Ac^Qv zfh5f8(cEv!C(hwPQ+mdupxNI99nq$9Zbw3T@S$0{rK-SwHr0H3Nc)8x;m4@L3#geV1tu?7G z_EfQfBO)1a-cn(_`HVJbxzVHzIb3VYuB`N^ZUPTlYT?wLR5u7jYu!HFn~)pZ1?jDn zdvGM7V*Ve$Qj~~csVv`xR;;G`R`r*KZ-qUkf@C<u(DVK8WP&oOc^BNlR?iTmg4FPqA-pWv zElNP~6H48%->$GK5w3W2wbX#gt621~fIWN%uDucD)>mqvUN7uS_;m85NoLT6JxBeM zc30keQ10IS#PKutTRek`1$B;_aD;$QXm1Kj40PU2nM0&@06CKEf8LK2OCHGJ{}5he zDbG{eps<{pK(q+0Rnb&hJ$t1=I3Ymp#sik+69hG6f*HyP8_HV<_y}V%Z5puvm!)yK z+cx}0+SH5z;P{PWwKQn%qrDx(gK2)^Ja$YJi9TF6are}$TTl_J4ognaM0FmrQ4`gc z%U@%=b-ML@L{Zv}YE?jAps*+tfz+W!!1C5oP$IwSqX@ zNv5CH;lsLV!4U?bxhz5yARAx=s80ulP#0hbupRIvz(^xB0T2LL0#pH>0$c*P0qS!M z-aiZY8Q`slzRtosmjJf_#{r2D(*|G|6hw1DCaV~b2I#)QiI-8wgXS;LIdDEFxXf51Z_+H`93y&85zHqeAz?=At zAfL<6;n(nfem!5$H}D~TC%=b3#CP+(`~d$6f1ba}f5v~#f60&VdLd4*2pK|-Fhj@} z9D*p!6BY_fgi>L(@T{;-*dS~Y8idz`R$+&5KsYFL34Ovz;ev2k_?sXLUkLvakQgr} zi&imDoGCJ*OI#!d*NQKQ4PvvnU2GHI7C#Vs#Z%%{@$cd-@xC}J7Px4a%QfG%!d306 zcWrg;aP4zd7X^xT6zwT$FM6-2v#6)&Own-B^&;qgHbN$t#00z5zQw-XoIkIA>mcgc^)A@W*~93gd70+mVGD3WqePf{gR8C661sg2YY z>UHWz)Glf-b%5%ienE9n$EiP1SE$?6D5a-Ow3W`KXVMH^NW1BU^isNIE-NwGgzRB)p53mQ>->@IE dr`e0_Us;*G%Nl1-oIQEAyK~m8GrBgr{y!qH$kG4+ delta 3139 zcmc&$eN)mq`oc`h8Th96MKF{xc zp7;59KQ6UpwPo9QqIbKHxg_GtIk$4!QcgaDcRzP>Hs}jlT!AsCZQMy0=%0W-7skZ> zF(?S`q^cUaVDZ*hoVdINNS zn5^%EvEC;}%GEu2vc3yQKgi#KQ< z5EHR0d<|j1_ruo`)%d4F$G8eYz=OJXF3X@hrbg)WjRi>er^8v01~8$yk7e26ygUQx z3T3?y!nixM&Z10Er7cfoIp3+tKssqv6hg(t!R#8cB4Yz}y4QupqNuvhRj|IZ2Fw~u z!e}WQOv6Kpi=8dXnv#g4hQ+()c#x;7mPKO5=IGi-CDq2LQ@MouR*9JGzBODN;l8C7 zBWBGK)j8Sz;b&2}KjJKk@N3SZq5hDwsARfdwMjQUqt=3|eYHu**%4Uz>i3YIwC8~= z2lG0oHaL{LAwRWr3nqiKGbVoalKI?@} zW@y+ePoe=@Q-PeU5<&h9KN&VM=Ci>7NrO=*N~L(BcBVPssRPET37G09f+NJV1!Atf zuN=w1_UA*q;CX>~I^}#eYp0AFTodNvgOMTT!1Q3uZ?z*`&*w)!pAT%_vuyem4g3w# zq$f(XQFWW(Cglfjg&@Q3tkODrzz8ViSk(&3SwNmn&zH&x^cO1IR8-5YtInw%hq&I= zX%1%}n9KSkBf=XabfyG2e6h-22R2=LU#o1mr^Jv{T$~Ah;-iKVIKS;6Baq^&58+QE z#t-p9HjAWAd_STn_u4&K_J`$41OJA0yiWOEYtQ%eyZf~sySCufXgJ})q}|eZab9+| zIQP{zLV>H_3Wa#8b?&D%Vx;>i+#l%z^s~+<*5LOdQ}bJ)8vpDHzg!(F>)V2D=iTK4 z$X)&fWjh+|59DenBNk>F?E`Qxk>W7gW7nOLbdIPKb{%*+)Nu782^*nEYb666*C ztmpngwhM37Etsi10C{;8CYec6Y_H@w^Ai+LMQgD4Rg}w&F|bH47;^20MuQSnw+rrb zqrC@mK}vl6N<1w(gAnn`=!BHRUeHlE94$w6CXmmn?7C4W+ ztsm+l0_3`M*d5S3m^S8+uAghgH; z4r-JLfy>pX_Q~QIwY2wTv{tHr8Lg9+zl_#Mg?L-Mfgthm_#&d!8#(fV%B5uxS`C;F z-~mQJ3ScQf`Sp?TB?EK-;whK|w1T`FPzR_1R03WDsA0|lqw>28{u=l)UWKuHaIGgW zA4$V{Fw!t)(a447flvmh0;~t@05k(W0(1es0Ne)L0H;fU4nQm5Fkly8GhiKn2h0U5 z2CM{(0UzbJ3xXdROrXvbRHgfgqjOU3dTRn@DUIm^qIRh2IhkzSQoF3xx} zb4BHfD(|DDFv0@=Guf2Rt%feavxwkR9zYT3Wq_3c$9RPH0lon=fW8f|$19{@;zL8P z#x=woV;*G|%^S>(=3knBWj<~0G@m#3n!hst!+hI(-%PL?HkyrNC$Q7l*Vzho1-qKv z%5+H5^){n*-Ny>9KdCUcWq+%(R{WpicR2Ck9ATobpSYvxXHr??B;-?;0XpZgd0 zkW=v*KAIoFkL6SODLl*D_$+=F|08|@znEXjSMpW-8h$;$iQmfa{y5*s zck@^HuX%}o#3Lb87$)e2L}8pTRiFh7S(kHT{e9fpqA6 z5<)uIg%D%7kuh?{eZ~)rX{H&b9McNZYSUY$ji#NZ-KGPkX46sAho)AO&vedo!)5x; z6h@9E$CE}fot#O|Cl`@KTsX}TIwS=mqL~1SNqBc-lC`>g`&D8Iy7OIWvpe|9p)HUiR<)^-*zNbRy za5|PAOTR)}>4oX^Y|Y}bOZe^eSmJJPta%Rv-BnUYr3BvpdZqRd4(}DGnj0q zfGJ_hndQtH<{jqO%n`=Rv@xAbH}g5u&)j7mGwQTqY4K^3)2wM3X-mA5r(IP22P$^- AbN~PV diff --git a/Source/lang.cpp b/Source/lang.cpp index 4cd85a0c..28409e57 100644 --- a/Source/lang.cpp +++ b/Source/lang.cpp @@ -86,8 +86,11 @@ StringTable* CEXEBuild::GetTable(LANGID &lang) { memset(table, 0, sizeof(StringTable)-sizeof(GrowBuf)*2); table->lang_id = lang; - table->user_strings.resize(build_userlangstrings.getnum()*sizeof(int), 1); - table->user_ustrings.resize(ubuild_userlangstrings.getnum()*sizeof(int), 1); + table->user_strings.set_zeroing(1); + table->user_ustrings.set_zeroing(1); + + table->user_strings.resize(build_userlangstrings.getnum()*sizeof(int)); + table->user_ustrings.resize(ubuild_userlangstrings.getnum()*sizeof(int)); string_tables.push_back(table); } @@ -236,8 +239,8 @@ int CEXEBuild::SetUserString(char *name, LANGID lang, char *string, int process/ if (string) user_strings_list->find(name, 0, &idx); unsigned int new_size = user_strings_list->getnum() * sizeof(int); for (unsigned int i = 0; i < string_tables.size(); i++) { - if (uninst) string_tables[i]->user_ustrings.resize(new_size, 1); - else string_tables[i]->user_strings.resize(new_size, 1); + if (uninst) string_tables[i]->user_ustrings.resize(new_size); + else string_tables[i]->user_strings.resize(new_size); } } diff --git a/Source/strlist.h b/Source/strlist.h index d281fdbe..d561ccb3 100644 --- a/Source/strlist.h +++ b/Source/strlist.h @@ -7,7 +7,7 @@ class IGrowBuf { public: virtual int add(const void *data, int len)=0; - virtual void resize(int newlen, int zero=0)=0; + virtual void resize(int newlen)=0; virtual int getlen()=0; virtual void *get()=0; }; @@ -15,9 +15,11 @@ class IGrowBuf class GrowBuf : public IGrowBuf { public: - GrowBuf() { m_alloc=m_used=0; m_s=NULL; } + GrowBuf() { m_alloc=m_used=m_zero=0; m_s=NULL; } ~GrowBuf() { free(m_s); } + void set_zeroing(int zero) { m_zero=zero; } + int add(const void *data, int len) { if (len<=0) return 0; @@ -26,7 +28,7 @@ class GrowBuf : public IGrowBuf return m_used-len; } - void resize(int newlen, int zero=0) + void resize(int newlen) { int os=m_alloc; int ou=m_used; @@ -61,7 +63,7 @@ class GrowBuf : public IGrowBuf free(m_s); } m_s=n; - if (zero) memset((char*)m_s+ou,0,m_used-ou); + if (m_zero) memset((char*)m_s+ou,0,m_alloc-ou); } if (!m_used && m_alloc > 65535) // only free if you resize to 0 and we're > 64k { @@ -78,7 +80,7 @@ class GrowBuf : public IGrowBuf void *m_s; int m_alloc; int m_used; - + int m_zero; }; class StringList @@ -229,7 +231,7 @@ class MMapBuf : public IGrowBuf return getlen()-len; } - void resize(int newlen, int zero=0) + void resize(int newlen) { if (!m_gb_u && newlen < (16<<20)) // still in db mode {