Merge M17 branch fix for nsbeta2+ bugscape bug 1895: get rid of error 340 in
Mac installer during XPCOM autoreg by delaying so fragment registry has time to update newly extracted shlbs. [branch fix r=dveditz; a=pdt] git-svn-id: svn://10.0.0.236/trunk@76005 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
8f76cd0e1a
commit
9f8f3d16fc
@ -28,7 +28,8 @@
|
||||
#include "zipstub.h"
|
||||
#include "zipfile.h"
|
||||
#include "nsAppleSingleDecoder.h"
|
||||
#include "TextUtils.h"
|
||||
|
||||
#include <TextUtils.h>
|
||||
|
||||
static FSSpec coreFileList[kMaxCoreFiles];
|
||||
static short currCoreFile = 0;
|
||||
@ -54,6 +55,7 @@ ExtractCoreFile(short srcVRefNum, long srcDirID, short tgtVRefNum, long tgtDirID
|
||||
{
|
||||
OSErr err = noErr;
|
||||
StringPtr coreFile = 0;
|
||||
UInt32 endTicks;
|
||||
short fullPathLen = 0;
|
||||
Handle fullPathH = 0;
|
||||
Ptr fullPathStr = 0;
|
||||
@ -124,6 +126,13 @@ cleanup:
|
||||
if (fullPathStr)
|
||||
DisposePtr(fullPathStr);
|
||||
|
||||
/* pause till frag registry is updated */
|
||||
endTicks = TickCount() + 60;
|
||||
while (TickCount() < endTicks)
|
||||
{
|
||||
YieldToAnyThread();
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -186,6 +195,8 @@ InflateFiles(void *hZip, void *hFind, short tgtVRefNum, long tgtDirID)
|
||||
|
||||
while (!bFoundAll)
|
||||
{
|
||||
YieldToAnyThread();
|
||||
|
||||
/* find next item if one exists */
|
||||
rv = ZIP_FindNext( hFind, filename, 255 );
|
||||
if (rv==ZIP_ERR_FNF)
|
||||
@ -276,7 +287,7 @@ InflateFiles(void *hZip, void *hFind, short tgtVRefNum, long tgtDirID)
|
||||
if (fullPathStr)
|
||||
DisposePtr(fullPathStr);
|
||||
}
|
||||
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
@ -158,11 +158,11 @@ void HandleKeyDown(EventRecord* evt)
|
||||
return;
|
||||
case kTerminalID:
|
||||
if (!gInstallStarted)
|
||||
{
|
||||
{
|
||||
DisableNavButtons();
|
||||
ClearSiteSelector();
|
||||
gInstallStarted = true;
|
||||
SpawnSDThread(Install, &tid);
|
||||
gInstallStarted = true;
|
||||
}
|
||||
return;
|
||||
default:
|
||||
|
||||
@ -153,7 +153,7 @@ pascal void* Install(void* unused)
|
||||
}
|
||||
SetZone(ourHZ);
|
||||
gSDDlg = false;
|
||||
|
||||
|
||||
FSpDelete(&idiSpec);
|
||||
}
|
||||
else
|
||||
@ -463,14 +463,13 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec)
|
||||
Str255 pkeybuf;
|
||||
FSSpec fsExists;
|
||||
StringPtr pcurrArchive = 0;
|
||||
|
||||
|
||||
err = FSMakeFSSpec(vRefNum, dirID, idiName, idiSpec);
|
||||
if ((err != noErr) && (err != fnfErr))
|
||||
{
|
||||
ErrorHandler(err);
|
||||
return false;
|
||||
}
|
||||
|
||||
err = FSpCreate(idiSpec, 'NSCP', 'TEXT', smSystemScript);
|
||||
if ( (err != noErr) && (err != dupFNErr))
|
||||
{
|
||||
@ -517,7 +516,7 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec)
|
||||
|
||||
// get file number
|
||||
fnum = ltoa(compsDone);
|
||||
|
||||
|
||||
// construct through concatenation [File<num>]\r
|
||||
GetIndString(pkeybuf, rIDIKeys, sFile);
|
||||
keybuf = PascalToC(pkeybuf);
|
||||
@ -627,7 +626,6 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec)
|
||||
}
|
||||
if (fnum)
|
||||
free(fnum);
|
||||
|
||||
compsDone++;
|
||||
// XXX shouldn't this be #if MOZILLA == 1
|
||||
}
|
||||
|
||||
@ -98,6 +98,7 @@ void Init(void)
|
||||
gDone = false;
|
||||
InitManagers();
|
||||
InitControlsObject();
|
||||
CleanTemp();
|
||||
|
||||
#if (SDINST_IS_DLL == 1) && (MOZILLA == 0)
|
||||
if (!InitSDLib())
|
||||
@ -197,6 +198,7 @@ InitOptObject(void)
|
||||
err = FSMakeFSSpec(gControls->opt->vRefNum, 0, "\p", &tmp);
|
||||
pstrcpy( gControls->opt->folder, tmp.name );
|
||||
err = FSpGetDirectoryID( &tmp, &gControls->opt->dirID, &isDir );
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
@ -241,6 +243,39 @@ void InitManagers(void)
|
||||
FlushEvents(everyEvent, 0);
|
||||
}
|
||||
|
||||
void CleanTemp(void)
|
||||
{
|
||||
OSErr err = noErr;
|
||||
short vRefNum;
|
||||
long dirID;
|
||||
FSSpec viewerFSp;
|
||||
#ifdef MIW_DEBUG
|
||||
Boolean isDir = false;
|
||||
#endif
|
||||
|
||||
#ifndef MIW_DEBUG
|
||||
/* get "viewer" in "Temporary Items" folder */
|
||||
ERR_CHECK(FindFolder(kOnSystemDisk, kTemporaryFolderType, kCreateFolder, &vRefNum, &dirID));
|
||||
err = FSMakeFSSpec(vRefNum, dirID, kViewerFolder, &viewerFSp);
|
||||
#else
|
||||
/* for DEBUG builds temp is "<currProcessVolume>:Temp NSInstall:" */
|
||||
ERR_CHECK(GetCWD(&dirID, &vRefNum));
|
||||
err = FSMakeFSSpec(vRefNum, 0, kTempFolder, &viewerFSp);
|
||||
if (err == fnfErr)
|
||||
return; /* no debug temp exists */
|
||||
err = FSpGetDirectoryID(&viewerFSp, &dirID, &isDir);
|
||||
if (err != noErr || !isDir)
|
||||
return;
|
||||
err = FSMakeFSSpec(vRefNum, dirID, kViewerFolder, &viewerFSp);
|
||||
#endif
|
||||
|
||||
/* whack the viewer folder if it exists */
|
||||
if (err == noErr)
|
||||
{
|
||||
ERR_CHECK(DeleteDirectory(viewerFSp.vRefNum, viewerFSp.parID, viewerFSp.name));
|
||||
}
|
||||
}
|
||||
|
||||
void MakeMenus(void)
|
||||
{
|
||||
Handle mbarHdl;
|
||||
@ -284,8 +319,7 @@ void MainEventLoop(void)
|
||||
|
||||
while (!gDone)
|
||||
{
|
||||
if (gSDDlg)
|
||||
YieldToAnyThread(); /* SmartDownload dialog thread */
|
||||
YieldToAnyThread(); /* SmartDownload dialog thread */
|
||||
|
||||
if (!gDone) /* after cx switch back ensure not done */
|
||||
{
|
||||
@ -402,7 +436,7 @@ void Shutdown(void)
|
||||
|
||||
if (gControls)
|
||||
DisposePtr( (char*) gControls);
|
||||
|
||||
|
||||
frontWin = FrontWindow();
|
||||
MIWMagic = GetWRefCon(frontWin);
|
||||
if (MIWMagic != kMIWMagic)
|
||||
|
||||
@ -571,6 +571,7 @@ void InitControlsObject(void);
|
||||
OSErr GetCWD(long *outDirID, short *outVRefNum);
|
||||
void InitOptObject(void);
|
||||
void InitManagers(void);
|
||||
void CleanTemp(void);
|
||||
void MakeMenus(void);
|
||||
void MainEventLoop(void);
|
||||
void ErrorHandler(short);
|
||||
|
||||
@ -302,8 +302,8 @@ InTerminalContent(EventRecord* evt, WindowPtr wCurrPtr)
|
||||
{
|
||||
DisableNavButtons();
|
||||
ClearSiteSelector();
|
||||
gInstallStarted = true;
|
||||
SpawnSDThread(Install, &tid);
|
||||
gInstallStarted = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user