summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorMark Hammond <mhammond@skippinet.com.au>2003-07-15 23:03:55 (GMT)
committerMark Hammond <mhammond@skippinet.com.au>2003-07-15 23:03:55 (GMT)
commitedd07737d70f9021d90f3990fd7f527aa9a54e48 (patch)
tree3f1d62b0f65c38d5c14d81ad399918270c1037ca /Python/pythonrun.c
parentd51ce7de97f3aa1cf6ee65975475dce371cd3aea (diff)
downloadcpython-edd07737d70f9021d90f3990fd7f527aa9a54e48.zip
cpython-edd07737d70f9021d90f3990fd7f527aa9a54e48.tar.gz
cpython-edd07737d70f9021d90f3990fd7f527aa9a54e48.tar.bz2
Fix [ 771097 ] frozen programs fail due to implicit import of "warnings".
If the initial import of warnings fails, clear the error. When the module is actually needed, if the original import failed, see if it has managed to find its way to sys.modules yet and if so, remember it.
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c41
1 files changed, 36 insertions, 5 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index a8dedde..fb40e8f 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -69,9 +69,38 @@ int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
int _Py_QnewFlag = 0;
/* Reference to 'warnings' module, to avoid importing it
- on the fly when the import lock may be held. See 683658
+ on the fly when the import lock may be held. See 683658/771097
*/
-PyObject *PyModule_WarningsModule = NULL;
+static PyObject *warnings_module = NULL;
+
+/* Returns a borrowed reference to the 'warnings' module, or NULL.
+ If the module is returned, it is guaranteed to have been obtained
+ without acquiring the import lock
+*/
+PyObject *PyModule_GetWarningsModule()
+{
+ PyObject *typ, *val, *tb;
+ PyObject *all_modules;
+ /* If we managed to get the module at init time, just use it */
+ if (warnings_module)
+ return warnings_module;
+ /* If it wasn't available at init time, it may be available
+ now in sys.modules (common scenario is frozen apps: import
+ at init time fails, but the frozen init code sets up sys.path
+ correctly, then does an implicit import of warnings for us
+ */
+ /* Save and restore any exceptions */
+ PyErr_Fetch(&typ, &val, &tb);
+
+ all_modules = PySys_GetObject("__modules__");
+ if (all_modules) {
+ warnings_module = PyDict_GetItemString(all_modules, "warnings");
+ /* We keep a ref in the global */
+ Py_XINCREF(warnings_module);
+ }
+ PyErr_Restore(typ, val, tb);
+ return warnings_module;
+}
static int initialized = 0;
@@ -190,7 +219,9 @@ Py_Initialize(void)
_PyGILState_Init(interp, tstate);
#endif /* WITH_THREAD */
- PyModule_WarningsModule = PyImport_ImportModule("warnings");
+ warnings_module = PyImport_ImportModule("warnings");
+ if (!warnings_module)
+ PyErr_Clear();
#if defined(Py_USING_UNICODE) && defined(HAVE_LANGINFO_H) && defined(CODESET)
/* On Unix, set the file system encoding according to the
@@ -262,8 +293,8 @@ Py_Finalize(void)
PyOS_FiniInterrupts();
/* drop module references we saved */
- Py_XDECREF(PyModule_WarningsModule);
- PyModule_WarningsModule = NULL;
+ Py_XDECREF(warnings_module);
+ warnings_module = NULL;
/* Collect garbage. This may call finalizers; it's nice to call these
before all modules are destroyed. */
1 Sȇk=y5%;CN>@Rqo[ Ơ S$9q8*-(E@yBB=uv{dwSַޓ>}C4IPL{=loHy6UIU׳AD2r8k<}z[}w*sQPR],fޫٜ)\ }UO5 iok]ͣARֱ) X 9L"hN?sab$.cDnR:cIzՋc@oeW]Bh ""yK `:kge: ]`qdDIIf7 R΂5/]\f/=O#QZ5Z+#x' A>Ud)zyyOoTϮdJ wꆁzYF'{SW7z}*B)o:XGc+2Rߋ49fEeXb[ZИ[0'yLsg&~o7[9/%xEefb6Yri`州ܓXZyD~ucFxtMxG6EUNZ?,a'V塮"^uO3qŰRfV8t0w- wc%q+Sֹ ìU*ԕ}PFQpc:;aGlLDڂrr]>fnێ( q۱cd7 ~4 CƷ<<%ssR.m@ Pc0>wF) 7 wrBIwӒmjJ)3wrJPg)K\s\,9oA2n3ȅ[Iwiq[LEzڶyGYtnsYQBys?[=+}GS:Tw(o;S>0w*TUK2 kvu'|/]|[3}meJy6BbTt#b{6b@ի[GQos1_>/8YLYEVkghWk}D"4sg7e̾⭜抻ݚ]D7+x,2ET3rM,WYg.ug=&8LZHV5&ۻ^r`١\ 50WMJܦ֍*ʨϕe71k5[=Ǝ.<)G2&Jgjv1@3΁:oy\z ~d"K/xuhY+sE \@$^z5uM.G5t1nY9v|)|K>%fVNE<JLV m &H SgUKWbJg t6Sx,qa;88غT)J(s)6sUcwUM+8٣9:p+'YA!̭ri6V1@e& l)>['Z#wUK79ogbg#}l&g硊uBzd=QMj]k7{CFLR5OkubMIx wGLRSU]1P(}˽;ηȂ{1Rgs>+Ap1=KU0""&aOD+ E=f:!!`K!H8q76:O!pDh7q0ȴI0ԅJ+!XF >@Xdam*ȥdA0 ߖF[" 'c_%. azH7*hy|31Q(H Db9uBy&YǧhƒќDy*@Z@?-?ύ~?kB6Xu1P¦H~ B+~ov}GBIFW6L94DNWAh&jy)*Oj&Å?=ޟl9J)$L{Qd9*~j(%՚~!}J?}u4e2|/>PG(șw!_s濲cbIT>$R j6ԶaVR1Qd݊uH9OW/Z7yAeyumؔ*o~.@P>d(^{yWC H*a KrKٿ/4&pܮGe߁˱Baj̣.ͧ SǃU7C'`kakTd4Wl/} :Q(FCl=^$ < 6Ĉ[ls^?lf 2TDNEGVjI 吠*QB= v2!og4V6Xp" OkxSDBooAiP)upZ_H:LeC)Bg$C0£ Wrl R*Cˊ,6>i; UQ@ytv4omcp oS{{g{a l%*5mKك|[$%lGcsjl]R^`UJ'{ G~ xR9&>p"' J(\\{҈0"?d̖t&4]K[\40N* iU,^}@Tf[j0NC:rcӶ0!!FM7%sӮsy;/ⰮsCNN, S&Qǃf^r!'>tjR{ox<(Ak-IgLj1$ TU@(v3o7RB)({#HD4 VXDN}v)b)a`SxaPbDwHEߙ3%PiL"a?d I!+$YJ^cNxXgq'r*M"z?V*Bpt{~VZQAEӻˢ^?͎Qq੔3vpou5j?V]KhLLbs+#y2^%8wi!^j@~8!^yVEQ o -*w{Hr!QŸ0?L@Rbl`ebXv$WmSRPw7/\d?}ˇ-v=Zڷ;H @phS Jk<KTT\;g=tt_{h]>/A{==TSʋ2 z\){=دO㛇Fޗj{0 *zhOzx-`{Nxhraf"<};DyN@nRM\,C7D247(jȐHEd}dϺ~zܶєDR 5׿1ѹ_7~)t"|Gč3ctQMn=E 0T@=kSY++9Pݞs~m]au)61kA1.FR*Qqʂ%GqlB&t(JIb2ZOV/A-DoU>jAAP 迯o5R' Pjb#I]8suQ ?jj;gPލCJ9ݎqNza~T"%uDKW-+UfIelh{QBpp8=:70k374MÂAڟdS013t:ˁ tX/(~hfbj:cR/kHMp P6eFe˛b{\xkzfz&d06G_v}z qIp{Xژ%H!!x g)B ˆ"$FBf\3a!㢡'U\ V_O/3}?'n/9?hrӤC>=p*s}Wa&>ay7m2ޓ1*NyfLv>B3!)>3g½;ߓ&>3Ȩ܈)ZmŰ^E{BP5h\MEI>`CDd2(UIHB,+PAF",UV*U!FT7e`d  ,a##̉E$6 H }X? B%wPRTS&PPɟ,7d;"ޅ1adr1a?gy{?Au{xG(QXׅߞ;pD^l0Fu\)-pH *W;#v)s¸-''ZnvG5>uO=zךZۡlWHv]#**:ZI~_fp0ѫb;\8풬@"P&=2ƚ1(nf.*1m0[@ikĎb20Nc?J{uO/8Uq㢎PCv7ao3Yһ+xFm٦8F02#5k٩Ts3 ?Îc}* Mefiٌ6MiM+)Id3Bj,H*=u ;u >QdSF:윦-67)ߺLQB9WOY9{̚RXcJw ^qeөe9,2 QfTlٌȒ O~ O:)H#d_QRƚ4?s}fSHT Uk>Pt؆;e3&[TPHUƙ*zsl-`d"hq$"0. HpfE >("(O9BjGbUo'gUt|sOȾW@̢(B=tϜ`ͳh~^0詔Ag>kyc[KD2'%63,ʮȺ |o87ɲI)sd-xM8gO}vKi:`O~͇keXu|6&MzةMj{֧FM1[1`HYUsSw؋v?WՍyL[u9g9(:͚"GtT_68M.iE{T}[ֿJؘN€$QU@8(J*P1-WL*y<}q6FC kQyKP\*< 2" EbD V $@`2A +0b ,B{+іs1:!~\'OV @8#0 yづ$bT`BC1B8Մ=5Qpx#e!Jj h ٠I"d0QH'\՛6di6=- oEu@Ů 8%!(\l >O9%thFW*/w=Afd:-N9V)PG/ƜK2nTT TZ3 sߔLI*ڂ[t5%FVkJ 68.fkMӤ}_ͻM*ZRB+zbsU6bմʊ T  l^9٬ kf˶ڕ'uxs7xv Z튱B/"BE )*?U?PͧS\6eR&^MB/N8Qm2׸H)l_ kk)H[R:n}kMo^\_26mOmsu%cX'/b)@UQPSɘ<aIYK [.I' <<~<-: [\DZk{=]pnY{x;0bPI=J,FEI 2BrM8F|=TJ"Ğ=`$5L,([f=XkJȰj~-Xt怀&'Qd$<@~D#X:rẍhu5l!җP'J̹̉ʪT`as0!!‡5~N&O F `4nx"i('/riP8QQ# 2} I`RH  =dXB,LQmv'+P?KDt׆@\!U^tMŲGjz?O̥Nm_g'ptc9`ۈ = nX(`{V&PFA$6jk(En!aP01`IYHkVDHIB#!8h|QgɆy~~8܂/H(LJ1(uḀ,%K 1 cLۧZ6Id E"QyR}8Y 1M)&sfQX2%,ݶFHx,ݘ@R:ZRL փHRiE%Su.f$lB,ұ#1٪20 ?ADo D?~ ?]tEc`ow}qg˅w0VɑRض jd7~nE?tƅdwSةTڡ.wuXrfSv}dj(7}f̚.,ȷT-a)bsՋw,nr7"‘hf{܎W\CH�[5 ,Rؿ&MmvcvLE;Q!;ir.פS~9NmZvkXB`|dzlYRݜLfB*nsS2#XYETONdQPp7a,ihfEd^e϶UbڎNk7DbÃܗN9 06ԏ4GݵͲc(֫yb9tNе*J:/\UMˎDg͚6Gg i 4INq> Ӭ$;tZclCo6*~WC\5X7' rga;FC -F: C6{$Iѝ9TwX:MRm"Y4&[:$shpAUƾQaf(wJc2h"Zܸ]6Be"xY)7Iy]?0{-1.7^=>7́JVʍHܕ*(G)PA .ukST|ANȾ^KL,3 P ( MTUJaF\Q6ծ=`WB3m$Xb4G*y/4+ғݛ[88%_<עZA}DI)D+Kt9Q(#J:@牸#(8De8#mLne5݇@);F*HE 语-$ W*j !M 1FOX pd^W+XFk~w|a5Y 8 1*̝cp)(32; Doh sNcd8%2(;nɑw>Iqc5R6DTasƺ*I WQYrVky&`Q^-6~ ɕLG(GuipD4 ,QRR&d +LÜf$b,#ثƖ3Gl;IjXD* #B>Pt0uP/lH̉xe.;x{iKQr.xPRcf4)B vIZ0 F7-WVW aGx;Խe| si\%7&M34WFf&NeIA,S~dT؀lúc7Rz 8kW0B}%f(SL,EiSRZq s ݍY#~BsըBK:J5;>~g6Ѯ>5A{#5Ckgv}@D ]hWs̞wZ4-sKXWs+8}G:f%aͷBjɃLqWֱ7-sU΢Å\u?7J )mGD)( lI[QURɞyߕB_3 P*Emzծg??|RXsLDPk<+NNڡyjn4 vE8# ֓Tv}YGe5X7]fSftU3*ozM6gӴےD b.fFU,z0ԣϨe׾d*Bx?ǍP $`("-vW]<+ǛCQ9ǭx^1&-)+gmtMarHgol>*":M'U(I`S +$FB{a$S'2ߖEzhx} whL{X iJc7_z)~cʃK a*@+6BP]V:<]cc&pTu;B0f \\ȹh[xh;UȼR\Ț.X+uu݂ WX34 .vIa;9Aoqn-}Lι0ĸ.JrDl2! ZvF?TG+)G*mW:eJ RCNM|Q{" nm(FUJOuoo- ώD vIn_w !_֤~X96E @ mg[AǁMKB}} , Nxq2BH0ߎ%k[N{9m3پU^nvPA0.9N?/)sUFE8hrpH0|+[6eڍs}bQ찉J"ۍ~O=bS>{C6\4WW(~j le׫=$HLule3(yPexyAH 1a0d; Ld `Qb'!gyq8UбɾO(S< {b> ˺L,fx_SJޱ21ƊU*=t#&>QYCS"R$iEn&2 BAdIFY(-8 qIvWb&(-jpKf3H/A6FOy Zn; F,)EXn_21 *q 'P9[櫉$|D3%!q)Eû7%GeFV6b;e!-OEAT`mżk =@wŶ\-:6ߚS8|>_(Nˀ X qpv,\˜g"#W6vss=g;G eɝWNkJFmf*-b4&TzIc-&¦Hta c `1" ҉-bŔRu3O 3 ω'u<ԽQB٣]#Yd-J[CT&QI>…B4xD' r9UVԭD`/V+={ {%zP׉aUfCyBux#hGA2R`7߁9(b?zF)d;@Cbq$$b0dT>~ "Iw9)ssöV! >b}gmG@Dɞ !A>Og~ן|'q?U*.F Eiw65 F!1$Y--aTp2AK$nX`b"(-XeHVPP-F["6?9xQZ+m@g--Q`a:{}}n|z=&Zٳ[&ke8uk5:^.:|͕͝Ւy\7RVաaט.Xa8. 5nr{UEyG$ UA@dBC)7"9M`r@D2%H "+*D,"$ ("Q@X ER(,T# dY1E ,őE)+bDGv8`D .+1~+ҙ[lPz.] hcR=$!1DI6X;Dpd `h⊫”AȨbȈ,Ab,QHnNoH YEȁC}i.! T=fr |{*w\aDk5AN@ 1SAU;kpގNXXMC'w"Ȅ,=n_g& #BK"*. *vjl AP>WLC .Sz1Fۅx71Xu:,ӢGKV i p ^ޖ i9W&/q),@fڅlI#9ڤ~"J$\ԟ%? s LĨ&q"8\F<ۃȈ`z$*t ttSϸ~ݮXj7!#[oE {I{^00*AK1Y.YX*$1">vm~|7ٗ;>]Rj@$}k?4p&oECNR{TCBzY7 yRoVwZ|>{~n9< f%"*yH򂐏Q&X9+ɠT)StJ)9;G:fh0F kp禍̓bC(Tj&DYg'=PhߓO!(<OIF0ZVXTQc"0dQIX" D OƓo} ϢB*r zNI"*}6vせ:z2e  ωLݹe"u?;9Chl p¯ rH kE]$ GلI]ӫBƄ!E30g8ë՘q1 x!-fs׾c .tA$XUB$g_xWt|~.N:;yqa"8ёP$$BD  S`\=I~E65\M g+ ncGL7# H1bX2@J@5`(^xsK\USlx# >J%w ѿbpag(Y2I ز5@wܻ6)t֋`vc6"B ObEUTڔK,/&1!F||>x8F D~EAO4NqP0\緥Dˠ-ZQ. (`NBJPy+9 Bk?vqJI`ij;G'@iA*DnE}A.%g̑f)MM¡(%MOb~qP5I(9em+d ]Qq؉Jפ:F2KFt 93H@s>wQ/Ł@8}UK(읍O9+ض0Y,Mp0{t:D\Iu4LjԆ!m,T c2':Q`u^Z:rl*N༙v4ZH&@Kq)Z&DqCL:p=($D!1@@M@+6N}OɤF0FL=Y;^s!R_+OGH82r@z 0SM0#IVD)%ز2GWyb|%@D ޓê |[ b}fa$%С/XZW+;I*J0)^ hM./II7k|q)k7 q1$"2Oqe-0k "lYte`"wnM{vs(P-W:U-8>aJ˖8>:T#e4s,tWm@b<+pԆrMaT6U40MxoPbrIOZ,=nbp0H,yKC*Paw;rI֘XYG!cDgH2 3wS "W1BtC"ͶnCUw ,aDC|&'^k5 dmԁUol~R<ԙ&(5C}E%0) QFWTd۴9ЮV[3f *v2BBAy WLbisvDg DjLgCro䋊V5g&N)IN w 2A ĺְLL`rJ\4ig&:Ѷ*+iMTFpedУS&9"iWs)[%T(sF"]n*p QЎTLXY%R%A_[)Yq9`I_G@m7&ԛ YEcj铠FNR#k1olٹ6s-*Cc#``4I ! nV +fbhaX4$P*CLa 5ta1 ufE=3zm5iZt$Dt( I8g(B`L+ó x)vH(BV A (AHY,Z@] Z?83 Q)< C  klYj ~;D@oR~7J<`p OI.: u sM&:Ҡ^WFFLĩ]1xBc B gA$EШ!L0F@qJT2{rVT}t)!0H\1sX, x˅ يrnb-@%%+, @Dv *`[J"%Dw}~5;^Cy}+LxE:B RG-/RH ~4G;6"1 V`ąqZ%iBJ6i`d v c`A lBYldfmbIYDKT;)vԃ?jg8 ; -- dQ>MCݍ!!4j8a&3pB, &/i~FcTMH ^RPA*^t>X8}w֖$/s-mYbRlKb*d)p;ЮFO@PCPPST ']K%ƁUqZʖ (СBYn1"l`!A YaA"/,*D BG@@< ]o@Cl\,DwiHF1)lnFj&ͬEz" HȰF,X"HA (f;tєbFyNWG>5C~kE9湌r[YRz5_۴TDXUDՔe3FT(,H_n\sFŻZ\ٓIMG t9*Yt`|'wv(d3`:X &Uz }eB _lb g:0݇ ("*N!znQ<̆o."!e)VE`b B82 -m(袲 ĂN=Q C'`!7;tj1$ at$֥B0@#GEAI_C)[fŗRFmZMB5f /?rI 1()erTL0% {IfّD3s8_VRyc#NԙF*(|z2(Ӭ}V{ A,dR@}uBhUG'JjP`/:2~ 76Xy< Z](&nC'l5b_, s~@*dӗ UXsI*p퇉@15„g} RnZr"kYmM1d`TFc&\ ɍ bLBĿT͵nJ"QfTe0 T`ȀH4^埌PA0?I:HĈ]ߞ;k]AbۙB@H-6(ۊژ+-L! !#D`{ ž5E@q5Z(mTz 嗑2Û)%nD'ÿ4eZ78Th+t*luF9U'dw&xFsk *2z3+a+y)y+4Ɲl2~w^ ^yq!s@XEC6-k4Y% 99l@NvydYå6=L{ub&-]7c ; G'w`-HF6=2TpsժTD / Ly^*@F@Q$QU㷥TܨLЅ[蠇W"E3 * Hl•1.%kуF(-r^04Ӂ!+[Um+NV0Vh8z,BuSe3 tȜ ;g Rk؛\ P j#i]RN@SEk  d HA`(HhTEA+PC,5,amb6rA 83D&21" tGyz/oW|er㱝.Aa KѲ3 fci\Mj4[Zh/2aXmQV" HfX McAI`z,p 띳"7Dq(E$5IAq$YSx)QU5{yoX)>8R89I`ƋF>>=@N<ȟj ʇO|QD!iDK'\BAvm OF'g$vrdmɐVs0! ,!wnR'8OBP=HĬI7Vp@L޷|r0 ߝ~ os>U|2FUU+`*ڃPh1P~5 CBgg@LZm_26m0~Z'{}?6 hDdDJh'>/jԗ(%բ$B4k^4l),9qfA鸃8CD 2ߋ9R?P@Ё#12ߞ5a79\ϸpPjQs:Wៃ:&X" -` vS;v,SD̲$NSӷ| r90/jʉdLaHI & "< `Z!Ey oY!7vgM{1`G٠GSE eL“)X_@ijoP&N~ h)RP"QO.h-语 @X ;{:~|?@i5  _=YonmEC馤zzP%@Ifc ͵7`b0oPjk6) r\mV5!9,4DI8/+ !*ڤS̪̼ۢ2D 7W0k.K2hJ1 9f$Bv jPr&_v]7˪8'FBHbk/衻E$jRb B0$Eti;㼇v:e/׷bU襆 }H@l"$`dZWvww $$A9 dI!@E ? _pִ )c<;i!ݭVO^7-|ߓѡG ?#gS@!`㝐o"La,s!B ~T+ynKK B?F۫_~J-FIEu:o{ԇg ԨMGܑN$t6;