Towards fixing heisenbug exit after extraction but before installation. [b=39749, r=ssu]

This commit is contained in:
sgehani%netscape.com 2000-05-31 23:02:19 +00:00
Родитель 133b4e4d32
Коммит 4e61e2bc69
12 изменённых файлов: 107 добавлений и 69 удалений

Двоичные данные
xpinstall/wizard/mac/rsrc/MIWCommon.rsrc

Двоичный файл не отображается.

Просмотреть файл

@ -68,14 +68,14 @@ ShowAdditionsWin(void)
}
else
{
ErrorHandler();
ErrorHandler(reserr);
return;
}
gControls->aw->compDescBox = NULL;
gControls->aw->compDescBox = GetNewControl(rCompDescBox, gWPtr);
if (!gControls->aw->compDescBox)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}

Просмотреть файл

@ -68,14 +68,14 @@ ShowComponentsWin(void)
}
else
{
ErrorHandler();
ErrorHandler(reserr);
return;
}
gControls->cw->compDescBox = NULL;
gControls->cw->compDescBox = GetNewControl(rCompDescBox, gWPtr);
if (!gControls->cw->compDescBox)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}

Просмотреть файл

@ -44,10 +44,10 @@ pascal void* Install(void* unused)
#endif /* MIW_DEBUG */
SDISTRUCT sdistruct;
Str255 pIDIfname, pModulesDir;
StringPtr coreFile;
THz ourHZ;
StringPtr coreFile = NULL;
THz ourHZ = NULL;
Boolean isDir = false, bCoreExists = false;
GrafPtr oldPort;
GrafPtr oldPort = NULL;
#ifndef MIW_DEBUG
/* get "Temporary Items" folder path */
@ -61,7 +61,7 @@ pascal void* Install(void* unused)
err = FSpDirCreate(&tmpSpec, smSystemScript, &dirID);
if (err != noErr)
{
ErrorHandler();
ErrorHandler(err);
return (void*)0;
}
}
@ -70,7 +70,7 @@ pascal void* Install(void* unused)
err = FSpGetDirectoryID( &tmpSpec, &dirID, &isDir );
if (!isDir || err!=noErr)
{
ErrorHandler();
ErrorHandler(err);
return (void*)0;
}
}
@ -79,7 +79,7 @@ pascal void* Install(void* unused)
err = GetCWD(&srcDirID, &srcVRefNum);
if (err != noErr)
{
ErrorHandler();
ErrorHandler(err);
return (void*)nil;
}
@ -111,7 +111,7 @@ pascal void* Install(void* unused)
/* generate idi */
if (!GenerateIDIFromOpt(pIDIfname, dirID, vRefNum, &idiSpec))
{
ErrorHandler();
ErrorHandler(err);
return (void*) nil;
}
@ -129,13 +129,11 @@ pascal void* Install(void* unused)
#else
dlErr = SDI_NetInstall(&sdistruct);
#endif /* SDINST_IS_DLL */
#ifdef MIW_DEBUG
if (dlErr != 0)
{
ErrorHandler();
ErrorHandler(dlErr);
return (void*) nil;
}
#endif
#endif /* MOZILLA */
SetPort(oldPort);
@ -185,7 +183,7 @@ pascal void* Install(void* unused)
err = ExtractCoreFile(srcVRefNum, srcDirID, vRefNum, dirID);
if (err!=noErr)
{
ErrorHandler();
ErrorHandler(err);
if (coreFile)
DisposePtr((Ptr)coreFile);
return (void*) nil;
@ -194,7 +192,7 @@ pascal void* Install(void* unused)
/* run all .xpi's through XPInstall */
err = RunAllXPIs(srcVRefNum, srcDirID, vRefNum, dirID);
if (err!=noErr)
ErrorHandler();
ErrorHandler(err);
CleanupExtractedFiles(vRefNum, dirID);
}
@ -450,13 +448,13 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec)
err = FSMakeFSSpec(vRefNum, dirID, idiName, idiSpec);
if ((err != noErr) && (err != fnfErr))
{
ErrorHandler();
ErrorHandler(err);
return false;
}
err = FSpCreate(idiSpec, 'NSCP', 'TEXT', smSystemScript);
if ( (err != noErr) && (err != dupFNErr))
{
ErrorHandler();
ErrorHandler(err);
return false;
}
ERR_CHECK_RET(FSpOpenDF(idiSpec, fsRdWrPerm, &refNum), false);
@ -466,7 +464,7 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec)
buf = NewPtrClear(kGenIDIFileSize);
if (!buf)
{
ErrorHandler();
ErrorHandler(eMem);
return false;
}
compsDone = 0;
@ -992,7 +990,7 @@ InitSDLib(void)
ERR_CHECK_RET(FSMakeFSSpec(vRefNum, dirID, libName, &libSpec), false);
if (!LoadSDLib(libSpec, &gInstFunc, &gSDIEvtHandler, &gConnID))
{
ErrorHandler();
ErrorHandler(eLoadLib);
return false;
}

Просмотреть файл

@ -66,7 +66,7 @@ ShowLicenseWin(void)
}
else
{
ErrorHandler();
ErrorHandler(eParam);
return;
}
InitLicTxt();
@ -121,7 +121,7 @@ InitLicTxt(void)
{
if (!(text = NewHandle(dataSize)))
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
ERR_CHECK(FSRead(dataRef, &dataSize, *text));
@ -251,7 +251,7 @@ ShowLogo(Boolean bEraseRect)
}
if (reserr != noErr)
ErrorHandler();
ErrorHandler(reserr);
}
void
@ -380,7 +380,7 @@ InitScrollBar(ControlHandle sb)
currTE = gControls->ww->welcTxt;
break;
default:
ErrorHandler();
ErrorHandler(eUnknownDlgID);
break;
}
@ -411,7 +411,7 @@ DoScrollProc(ControlHandle theControl, short part)
te = *(gControls->ww->welcTxt);
break;
default:
ErrorHandler();
ErrorHandler(eUnknownDlgID);
break;
}

Просмотреть файл

@ -70,7 +70,7 @@ VerifyEnv(void)
if (err != noErr)
{
// errors already! we are bailing
ErrorHandler();
ErrorHandler(err);
bEnvOK = false;
}
@ -101,7 +101,7 @@ void Init(void)
#if (SDINST_IS_DLL == 1) && (MOZILLA == 0)
if (!InitSDLib())
{
ErrorHandler();
ErrorHandler(eLoadLib);
return;
}
#endif
@ -109,7 +109,7 @@ void Init(void)
#if CFG_IS_REMOTE == 1
if (!SpawnSDThread(PullDownConfig, &tid))
{
ErrorHandler();
ErrorHandler(eSpawn);
return;
}
@ -175,7 +175,7 @@ InitOptObject(void)
if (!gControls->opt)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -184,7 +184,7 @@ InitOptObject(void)
gControls->opt->folder = (unsigned char *)NewPtrClear(64*sizeof(unsigned char));
if (!gControls->opt->folder)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -204,7 +204,7 @@ InitControlsObject(void)
gControls = (InstWiz *) NewPtrClear(sizeof(InstWiz));
if (!gControls)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -218,7 +218,7 @@ InitControlsObject(void)
if (!gControls->lw || !gControls->ww || !gControls->stw ||
!gControls->cw || !gControls->tw)
{
ErrorHandler();
ErrorHandler(eMem);
}
return;
@ -248,7 +248,7 @@ void MakeMenus(void)
if ( !(mbarHdl = GetNewMBar( rMBar)) )
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -259,12 +259,12 @@ void MakeMenus(void)
AppendResMenu(menuHdl, 'DRVR');
}
else
ErrorHandler();
ErrorHandler(eMenuHdl);
if ( (menuHdl = GetMenuHandle(mEdit)) != nil)
DisableItem(menuHdl, 0);
else
ErrorHandler();
ErrorHandler(eMenuHdl);
ERR_CHECK(HMGetHelpMenuHandle(&menuHdl));
DisableItem(menuHdl, 1);
@ -319,12 +319,36 @@ void MainEventLoop(void)
Shutdown();
}
void ErrorHandler(void)
void ErrorHandler(short errCode)
{
// TO DO
// * throw up an error dialog
// * handle a "fatality" parameter for recovery
Str255 pErrorStr = "\pUnexpected error!";
Str255 pMessage = "\pError: ";
char *cErrNo = 0;
StringPtr pErrNo = 0;
if (errCode > 0) // negative errors are definitely from the system so we don't interpret
{
GetIndString(pErrorStr, rErrorList, errCode);
pstrcat(pMessage, pErrorStr);
}
else
{
pstrcpy(pMessage, "\pSystem error: ");
cErrNo = ltoa(errCode);
pErrNo = CToPascal(cErrNo);
pstrcat(pMessage, pErrNo);
if (cErrNo)
free(cErrNo);
if (pErrNo)
DisposePtr((Ptr) pErrNo);
}
ParamText(pMessage, "\p", "\p", "\p");
StopAlert(rAlrtError, nil);
SysBeep(10);
gDone = true;
}

Просмотреть файл

@ -79,7 +79,7 @@ typedef Boolean (*EventProc)(const EventRecord*);
err = _funcCall; \
if (err) \
{ \
ErrorHandler(); \
ErrorHandler(err); \
return; \
}
@ -87,7 +87,7 @@ if (err) \
err = _funcCall; \
if (err) \
{ \
ErrorHandler(); \
ErrorHandler(err); \
return _rv; \
}
@ -197,6 +197,7 @@ if (err) \
#define rAlrtDelOldInst 150
#define rAlrtOS85Reqd 160
#define rAlrtError 170
#define rMBar 128 /* menu rsrc ids */
@ -322,7 +323,16 @@ if (err) \
#define sLAUNCHAPP 30
#define sADDITIONAL 47 /* end parse keys */
#define eParseFailed 501 /* errors */
#define rErrorList 144 /* errors */
#define eParam 1
#define eMem 2
#define eParseFailed 3
#define eLoadLib 4
#define eUnknownDlgID 5
#define eSpawn 6
#define eMenuHdl 7
#define eCfgRead 8
/* end errors */
/*-----------------------------------------------------------*
@ -559,7 +569,7 @@ void InitOptObject(void);
void InitManagers(void);
void MakeMenus(void);
void MainEventLoop(void);
void ErrorHandler(void);
void ErrorHandler(short);
void Shutdown(void);
/*-----------------------------------------------------------*

Просмотреть файл

@ -67,10 +67,16 @@ ParseConfig(void)
gControls->cfg = (Config*) NewPtrClear(sizeof(Config));
if(!gControls->cfg || !ReadConfigFile(&cfgText))
if(!gControls->cfg)
{
ErrorHandler();
return;
ErrorHandler(eMem);
return;
}
if (!ReadConfigFile(&cfgText))
{
ErrorHandler(eCfgRead);
return;
}
ERR_CHECK(PopulateLicWinKeys(cfgText));
@ -122,7 +128,7 @@ ReadConfigFile(char **text)
*text = (char*) NewPtrClear(dataSize);
if (!(*text))
{
ErrorHandler();
ErrorHandler(eMem);
return false;
}
@ -148,7 +154,7 @@ PopulateLicWinKeys(char *cfgText)
gControls->cfg->licFileName = NewHandleClear(kValueMaxLen);
if (!gControls->cfg->licFileName)
{
ErrorHandler();
ErrorHandler(eMem);
return eParseFailed;
}
@ -167,20 +173,20 @@ PopulateWelcWinKeys(char *cfgText)
gControls->cfg->welcMsg[0] = NewHandleClear(kValueMaxLen);
if (!gControls->cfg->welcMsg[0])
{
ErrorHandler();
ErrorHandler(eMem);
return eParseFailed;
}
if (!FillKeyValueUsingResID(sWelcDlg, sMsg0, gControls->cfg->welcMsg[0], cfgText))
{
ErrorHandler();
ErrorHandler(eParseFailed);
return eParseFailed;
}
gControls->cfg->welcMsg[1] = NewHandleClear(kValueMaxLen);
if (!gControls->cfg->welcMsg[1])
{
ErrorHandler();
ErrorHandler(eParseFailed);
return eParseFailed;
}
@ -189,7 +195,7 @@ PopulateWelcWinKeys(char *cfgText)
gControls->cfg->welcMsg[2] = NewHandleClear(kValueMaxLen);
if (!gControls->cfg->welcMsg[2])
{
ErrorHandler();
ErrorHandler(eParseFailed);
return eParseFailed;
}
@ -205,7 +211,7 @@ PopulateWelcWinKeys(char *cfgText)
gControls->cfg->readmeFile = NewHandleClear(kValueMaxLen);
if (!gControls->cfg->readmeFile)
{
ErrorHandler();
ErrorHandler(eMem);
return eParseFailed;
}
if (FillKeyValueUsingResID(sWelcDlg, sReadmeFilename, gControls->cfg->readmeFile, cfgText))
@ -218,13 +224,13 @@ PopulateWelcWinKeys(char *cfgText)
gControls->cfg->readmeApp = NewHandleClear(kValueMaxLen);
if (!gControls->cfg->readmeApp)
{
ErrorHandler();
ErrorHandler(eMem);
return eParseFailed;
}
if (!FillKeyValueUsingResID(sWelcDlg, sReadmeApp, gControls->cfg->readmeApp, cfgText))
{
ErrorHandler();
ErrorHandler(eMem);
return eParseFailed;
}
}
@ -1030,7 +1036,7 @@ FillKeyValueUsingName(char *sectionName, char *keyName, Handle dest, char *cfgTe
value = (char*) NewPtrClear(kValueMaxLen);
if (!value)
{
ErrorHandler();
ErrorHandler(eMem);
return false;
}
@ -1061,7 +1067,7 @@ FindKeyValue(const char *cfg, const char *inSectionName, const char *inKey, char
key = (char *) NewPtrClear( kKeyMaxLen );
if (!sectionName || !section || !key)
{
ErrorHandler();
ErrorHandler(eMem);
return false;
}

Просмотреть файл

@ -65,7 +65,7 @@ ShowSetupTypeWin(void)
if (!gControls->stw->instType || !gControls->stw->instDescBox ||
!gControls->stw->destLocBox || !gControls->stw->destLoc)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -484,7 +484,7 @@ DrawDiskSpaceMsgs(short vRefNum)
reserr = ResError();
if (reserr!=noErr || !instDescRectH)
{
ErrorHandler();
ErrorHandler(reserr);
return;
}
@ -504,7 +504,7 @@ DrawDiskSpaceMsgs(short vRefNum)
dsAvailH = TENew(&viewRect, &viewRect);
if (!dsAvailH)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -547,7 +547,7 @@ DrawDiskSpaceMsgs(short vRefNum)
dsNeededH = TENew( &viewRect, &viewRect );
if (!dsNeededH)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -645,7 +645,7 @@ ClearDiskSpaceMsgs(void)
reserr = ResError();
if (reserr!=noErr || !instDescRectH)
{
ErrorHandler();
ErrorHandler(reserr);
return;
}

Просмотреть файл

@ -66,7 +66,7 @@ ShowTerminalWin(void)
viewRect = (Rect) **((Rect **)rectH);
else
{
ErrorHandler();
ErrorHandler(reserr);
return;
}
@ -75,7 +75,7 @@ ShowTerminalWin(void)
gControls->tw->startMsg = TENew(&viewRect, &viewRect);
if (gControls->tw->startMsg == NULL)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -87,7 +87,7 @@ ShowTerminalWin(void)
gControls->tw->siteSelector = GetNewControl( rSiteSelector, gWPtr );
if (!gControls->tw->siteSelector)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
@ -124,7 +124,7 @@ ShowTerminalWin(void)
gControls->tw->saveBitsCheckbox = GetNewControl( rSaveCheckbox, gWPtr );
if (!gControls->tw->saveBitsCheckbox)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
ShowControl(gControls->tw->saveBitsCheckbox);
@ -136,7 +136,7 @@ ShowTerminalWin(void)
gControls->tw->saveBitsMsgBox = (Rect) **((Rect **)rectH);
else
{
ErrorHandler();
ErrorHandler(reserr);
return;
}
@ -145,7 +145,7 @@ ShowTerminalWin(void)
&gControls->tw->saveBitsMsgBox );
if (gControls->tw->saveBitsMsg == NULL)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}
HLock(gControls->cfg->saveBitsMsg);
@ -263,7 +263,7 @@ InTerminalContent(EventRecord* evt, WindowPtr wCurrPtr)
}
else
{
ErrorHandler();
ErrorHandler(eParam);
return;
}

Просмотреть файл

@ -105,7 +105,7 @@ InitWelcTxt(void)
gControls->ww->welcTxt = TENew( &destRect, &viewRect);
if (!gControls->ww->welcTxt)
{
ErrorHandler();
ErrorHandler(eMem);
return;
}

Просмотреть файл

@ -54,7 +54,7 @@ void xpicbProgress(const char* msg, PRInt32 val, PRInt32 max);
rv = _call; \
if (NS_FAILED(rv)) \
{ \
ErrorHandler(); \
ErrorHandler(rv); \
return rv; \
}