From e6693b5ce471095e439547f0754f140c593da4b7 Mon Sep 17 00:00:00 2001 From: "sgehani%netscape.com" Date: Wed, 1 Sep 1999 23:59:16 +0000 Subject: [PATCH] * More memory issues ironed out. * Fix for 12644. --- xpinstall/wizard/mac/src/ComponentsWin.c | 42 +++++--- xpinstall/wizard/mac/src/Deflation.c | 39 +++++--- xpinstall/wizard/mac/src/EvtHandlers.c | 2 +- xpinstall/wizard/mac/src/InstAction.c | 47 ++++++--- xpinstall/wizard/mac/src/LicenseWin.c | 5 +- xpinstall/wizard/mac/src/MacInstallWizard.c | 17 ++-- xpinstall/wizard/mac/src/Parser.c | 4 +- xpinstall/wizard/mac/src/SetupTypeWin.c | 101 +++++++++++++++----- xpinstall/wizard/mac/src/TerminalWin.c | 26 +++-- xpinstall/wizard/mac/src/XPInstallGlue.c | 9 +- 10 files changed, 199 insertions(+), 93 deletions(-) diff --git a/xpinstall/wizard/mac/src/ComponentsWin.c b/xpinstall/wizard/mac/src/ComponentsWin.c index 7ef9244a6f42..f11f319df71b 100644 --- a/xpinstall/wizard/mac/src/ComponentsWin.c +++ b/xpinstall/wizard/mac/src/ComponentsWin.c @@ -55,7 +55,10 @@ ShowComponentsWin(void) if (reserr == noErr && listBoxRect != NULL) { HLock((Handle)listBoxRect); - gControls->cw->compListBox = (Rect) **((Rect **)listBoxRect); + SetRect(&gControls->cw->compListBox, ((Rect*)*listBoxRect)->left, + ((Rect*)*listBoxRect)->top, + ((Rect*)*listBoxRect)->right, + ((Rect*)*listBoxRect)->bottom); HUnlock((Handle)listBoxRect); } else @@ -63,7 +66,13 @@ ShowComponentsWin(void) ErrorHandler(); return; } + gControls->cw->compDescBox = NULL; gControls->cw->compDescBox = GetNewControl(rCompDescBox, gWPtr); + if (!gControls->cw->compDescBox) + { + ErrorHandler(); + return; + } gControls->cw->compListBox.right -= kScrollBarWidth; SetRect(&dataBounds, 0, 0, 1, gControls->cfg->numComps); @@ -79,7 +88,7 @@ ShowComponentsWin(void) SetControlTitle(gControls->cw->compDescBox, compDescTitle); MoveTo( gControls->cw->compListBox.left, gControls->cw->compListBox.top - kInterWidgetPad); - HLockHi(gControls->cfg->selCompMsg); + HLock(gControls->cfg->selCompMsg); selCompMsg = CToPascal(*gControls->cfg->selCompMsg); if (selCompMsg) DrawString( selCompMsg ); @@ -95,6 +104,9 @@ ShowComponentsWin(void) else DrawDiskSpaceMsgs( gControls->opt->vRefNum ); + //if (selCompMsg) + // DisposePtr((Ptr) selCompMsg); + SetPort(oldPort); } @@ -108,11 +120,11 @@ PopulateCompInfo(void) for (i=0; icfg->numComps; i++) { - HLockHi(gControls->cfg->comp[i].shortDesc); + HLock(gControls->cfg->comp[i].shortDesc); currDesc = *gControls->cfg->comp[i].shortDesc; - HUnlock(gControls->cfg->comp[i].shortDesc); SetPt(&currCell, 0, i); LSetCell( currDesc, strlen(currDesc), currCell, gControls->cw->compList); + HUnlock(gControls->cfg->comp[i].shortDesc); if (gControls->opt->compSelected[i] == kSelected) { LSetSelect(true, currCell, gControls->cw->compList); @@ -134,7 +146,7 @@ UpdateCompWin(void) SetPort(gWPtr); MoveTo( gControls->cw->compListBox.left, gControls->cw->compListBox.top - kInterWidgetPad + 1); - HLockHi(gControls->cfg->selCompMsg); + HLock(gControls->cfg->selCompMsg); DrawString( CToPascal(*gControls->cfg->selCompMsg)); HUnlock(gControls->cfg->selCompMsg); LUpdate( (*gControls->cw->compList)->port->visRgn, @@ -144,8 +156,11 @@ UpdateCompWin(void) SetPt(&c, 0, 0); if (LGetSelect(true, &c, gControls->cw->compList)) { - HLockHi((Handle)gControls->cw->compDescTxt); - r = (*gControls->cw->compDescTxt)->viewRect; + HLock((Handle)gControls->cw->compDescTxt); + SetRect(&r, (*gControls->cw->compDescTxt)->viewRect.left, + (*gControls->cw->compDescTxt)->viewRect.top, + (*gControls->cw->compDescTxt)->viewRect.right, + (*gControls->cw->compDescTxt)->viewRect.bottom); HUnlock((Handle)gControls->cw->compDescTxt); TEUpdate(&r, gControls->cw->compDescTxt); } @@ -174,7 +189,7 @@ InComponentsContent(EventRecord* evt, WindowPtr wCurrPtr) SetOptInfo(); } - HLockHi((Handle)gControls->backB); + HLock((Handle)gControls->backB); r = (**(gControls->backB)).contrlRect; HUnlock((Handle)gControls->backB); if (PtInRect( localPt, &r)) @@ -195,7 +210,7 @@ InComponentsContent(EventRecord* evt, WindowPtr wCurrPtr) } } - HLockHi((Handle)gControls->nextB); + HLock((Handle)gControls->nextB); r = (**(gControls->nextB)).contrlRect; HUnlock((Handle)gControls->nextB); if (PtInRect( localPt, &r)) @@ -223,8 +238,11 @@ SetOptInfo(void) int i; Rect viewRect; - HLockHi((Handle)gControls->cw->compDescBox); - viewRect = (*gControls->cw->compDescBox)->contrlRect; + HLock((Handle)gControls->cw->compDescBox); + SetRect(&viewRect, (*gControls->cw->compDescBox)->contrlRect.left, + (*gControls->cw->compDescBox)->contrlRect.top, + (*gControls->cw->compDescBox)->contrlRect.right, + (*gControls->cw->compDescBox)->contrlRect.bottom); HUnlock((Handle)gControls->cw->compDescBox); viewRect.top += kInterWidgetPad; SetRect(&viewRect, viewRect.left + kTxtRectPad, @@ -253,7 +271,7 @@ SetOptInfo(void) TextFont(applFont); TextSize(10); gControls->cw->compDescTxt = TENew(&viewRect, &viewRect); - HLockHi(gControls->cfg->comp[i].longDesc); + HLock(gControls->cfg->comp[i].longDesc); TESetText( *gControls->cfg->comp[i].longDesc, strlen(*gControls->cfg->comp[i].longDesc), gControls->cw->compDescTxt); TEUpdate( &viewRect, gControls->cw->compDescTxt); diff --git a/xpinstall/wizard/mac/src/Deflation.c b/xpinstall/wizard/mac/src/Deflation.c index d97b556eb61e..23cafab0daa7 100644 --- a/xpinstall/wizard/mac/src/Deflation.c +++ b/xpinstall/wizard/mac/src/Deflation.c @@ -47,6 +47,7 @@ ExtractCoreFile(void) PRInt32 rv; Boolean bFoundAll = false, isDir; char filename[255] = "\0", dir[255] = "\0", *lastslash; + Ptr fullPathStr; FSSpec coreDirFSp, extractedFSp, outFSp, extractedDir; long coreDirID, tgtDirID, extractedDirID; @@ -55,14 +56,14 @@ ExtractCoreFile(void) tgtVRefNum = gControls->opt->vRefNum; /* if there's a core file... */ - HLockHi(gControls->cfg->coreFile); + HLock(gControls->cfg->coreFile); if (*gControls->cfg->coreFile != NULL) { /* make local copy and unlock handle */ coreFile = CToPascal(*gControls->cfg->coreFile); if (!coreFile) { - err= memFullErr; + err = memFullErr; goto cleanup; } } @@ -104,9 +105,13 @@ ExtractCoreFile(void) } HLock(fullPathH); - *(*fullPathH+fullPathLen) = '\0'; - rv = ZIP_OpenArchive( *fullPathH, &hZip ); + fullPathStr = NewPtrClear(fullPathLen+1); + strncat(fullPathStr, *fullPathH, fullPathLen); + *(fullPathStr+fullPathLen) = '\0'; + rv = ZIP_OpenArchive( fullPathStr, &hZip ); HUnlock(fullPathH); + DisposeHandle(fullPathH); + DisposePtr(fullPathStr); if (rv!=ZIP_OK) return rv; hFind = ZIP_FindInit( hZip, NULL ); /* NULL to match all files in archive */ @@ -120,7 +125,7 @@ ExtractCoreFile(void) } else if (rv!=ZIP_OK) return rv; - + lastslash = strrchr(filename, '/'); if (lastslash == (&filename[0] + strlen(filename) - 1)) /* dir entry encountered */ continue; @@ -130,11 +135,14 @@ ExtractCoreFile(void) if (err!=noErr) return err; HLock(fullPathH); - strcat(*fullPathH, filename); /* tack on filename to dirpath */ - fullPathLen += strlen(filename); - *(*fullPathH+fullPathLen) = '\0'; - rv = ZIP_ExtractFile( hZip, filename, *fullPathH ); + fullPathStr = NewPtrClear(fullPathLen + strlen(filename) + 1); + strcat(fullPathStr, *fullPathH); + strcat(fullPathStr, filename); /* tack on filename to dirpath */ + *(fullPathStr+fullPathLen+strlen(filename)) = '\0'; + rv = ZIP_ExtractFile( hZip, filename, fullPathStr ); HUnlock(fullPathH); + DisposeHandle(fullPathH); + DisposePtr(fullPathStr); if (rv!=ZIP_OK) return rv; @@ -206,7 +214,9 @@ ExtractCoreFile(void) } cleanup: - // dispose of coreFile, coreDirPath + // dispose of coreFile, coreDirPath, hFind opaque handle + if (hFind) + rv = ZIP_FindFree( hFind ); if (coreFile) DisposePtr((Ptr) coreFile); if (coreDirPath) @@ -230,7 +240,10 @@ AppleSingleDecode(FSSpecPtr fd, FSSpecPtr outfd) ERR_CHECK_RET(decoder->Decode(), err); } - + + if (decoder) + delete decoder; + return err; } @@ -251,7 +264,7 @@ ResolveDirs(char *fname, char *dir) if (delimFound) { strncpy(dir, fname, dirpath-fname); - *(dir+ (dirpath-fname)+1) = 0; // NULL terminate + *(dir + (dirpath-fname)+1) = 0; // NULL terminate } } @@ -265,7 +278,7 @@ ForceMoveFile(short vRefNum, long parID, ConstStr255Param name, long newDirID) if (err == dupFNErr) { // handle for stomping over old file - err = FSMakeFSSpec(vRefNum, parID, name, &tmpFSp); + err = FSMakeFSSpec(vRefNum, newDirID, name, &tmpFSp); err = FSpDelete(&tmpFSp); err = CatMove(vRefNum, parID, name, newDirID, nil); } diff --git a/xpinstall/wizard/mac/src/EvtHandlers.c b/xpinstall/wizard/mac/src/EvtHandlers.c index a80b3c3014cc..b4d915093571 100644 --- a/xpinstall/wizard/mac/src/EvtHandlers.c +++ b/xpinstall/wizard/mac/src/EvtHandlers.c @@ -173,7 +173,7 @@ void HandleUpdateEvt(EventRecord* evt) if (gControls->nextB) { - HLockHi( (Handle) gControls->nextB); + HLock( (Handle) gControls->nextB); bounds = (*(gControls->nextB))->contrlRect; PenMode(patCopy); diff --git a/xpinstall/wizard/mac/src/InstAction.c b/xpinstall/wizard/mac/src/InstAction.c index c08e3212f34f..412f4fe3c897 100644 --- a/xpinstall/wizard/mac/src/InstAction.c +++ b/xpinstall/wizard/mac/src/InstAction.c @@ -67,7 +67,6 @@ pascal void* Install(void* unused) /* call SDI_NetInstall */ gSDDlg = true; - // YieldToAnyThread(); /* force gSDDlg to be picked up by Main Thread */ ourHZ = GetZone(); #if SDINST_IS_DLL == 1 gInstFunc(&sdistruct); @@ -82,8 +81,13 @@ pascal void* Install(void* unused) /* check if coreFile was downloaded */ HLock(gControls->cfg->coreFile); if (*gControls->cfg->coreFile != NULL) + { coreFile = CToPascal(*gControls->cfg->coreFile); + if (!coreFile) + return (void*) memFullErr; + } HUnlock(gControls->cfg->coreFile); + if (coreFile != NULL && *coreFile > 0) /* core file was specified */ { err = FSMakeFSSpec(vRefNum, dirID, coreFile, &coreFileSpec); @@ -97,12 +101,11 @@ pascal void* Install(void* unused) return (void*) nil; } - sleep(1); - /* run all .xpi's through XPInstall */ err = RunAllXPIs(vRefNum, dirID); if (err!=noErr) ErrorHandler(); + } CleanupExtractedFiles(); @@ -141,7 +144,13 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec) ERR_CHECK_RET(FSpOpenDF(idiSpec, fsRdWrPerm, &refNum), false); // setup buffer to at least 8K + buf = NULL; buf = NewPtrClear(kGenIDIFileSize); + if (!buf) + { + ErrorHandler(); + return false; + } compsDone = 0; instChoice = gControls->opt->instChoice-1; @@ -174,7 +183,8 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec) keybuf = NewPtrClear(2); keybuf = "]\r"; strncat(buf, keybuf, strlen(keybuf)); - DisposePtr(keybuf); + if (keybuf) + DisposePtr(keybuf); // write out \tdesc= GetIndString(pkeybuf, rIDIKeys, sDesc); @@ -184,10 +194,11 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec) strncat(buf, keybuf, strlen(keybuf)); // \tdesc ch = '='; // \tdesc= strncat(buf, &ch, 1); - DisposePtr(keybuf); + if (keybuf) + DisposePtr(keybuf); // write out gControls->cfg->comp[i].shortDesc\r - HLockHi(gControls->cfg->comp[i].shortDesc); + HLock(gControls->cfg->comp[i].shortDesc); strncat(buf, *gControls->cfg->comp[i].shortDesc, strlen(*gControls->cfg->comp[i].shortDesc)); HUnlock(gControls->cfg->comp[i].shortDesc); ch = '\r'; @@ -204,19 +215,21 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec) strncat(buf, keybuf, strlen(keybuf)); // \t ch = '='; strncat(buf, &ch, 1); // \t= - DisposePtr(keybuf); + if (keybuf) + DisposePtr(keybuf); // write out gControls->cfg->comp[i].url[j]+archive\r - HLockHi(gControls->cfg->comp[i].url[j]); + HLock(gControls->cfg->comp[i].url[j]); strncat(buf, *gControls->cfg->comp[i].url[j], strlen(*gControls->cfg->comp[i].url[j])); HUnlock(gControls->cfg->comp[i].url[j]); - HLockHi(gControls->cfg->comp[i].archive); + HLock(gControls->cfg->comp[i].archive); strncat(buf, *gControls->cfg->comp[i].archive, strlen(*gControls->cfg->comp[i].archive)); HUnlock(gControls->cfg->comp[i].archive); ch = '\r'; strncat(buf, &ch, 1); } - DisposePtr(fnum); + if (fnum) + DisposePtr(fnum); compsDone++; } } @@ -230,12 +243,14 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec) ch = '['; strncat(buf, &ch, 1); // [ strncat(buf, keybuf, strlen(keybuf)); // [Netscape Install - DisposePtr(keybuf); + if (keybuf) + DisposePtr(keybuf); keybuf = NewPtrClear(2); keybuf = "]\r"; strncat(buf, keybuf, strlen(keybuf)); // [Netscape Install]\r - DisposePtr(keybuf); + if (keybuf) + DisposePtr(keybuf); // write out \tcore_file=\r AddKeyToIDI( sCoreFile, gControls->cfg->coreFile, buf ); @@ -262,7 +277,8 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec) // close file ERR_CHECK_RET(FSClose(refNum), false) - DisposePtr(buf); + if (buf) + DisposePtr(buf); return bSuccess; } @@ -272,7 +288,7 @@ AddKeyToIDI(short key, Handle val, char *ostream) Str255 pkeybuf; char *keybuf, *cval, ch; - HLockHi(val); + HLock(val); cval = *val; GetIndString(pkeybuf, rIDIKeys, key); @@ -288,7 +304,8 @@ AddKeyToIDI(short key, Handle val, char *ostream) HUnlock(val); - DisposePtr(keybuf); + if (keybuf) + DisposePtr(keybuf); } Boolean diff --git a/xpinstall/wizard/mac/src/LicenseWin.c b/xpinstall/wizard/mac/src/LicenseWin.c index f804ed68dda3..519374b6923a 100644 --- a/xpinstall/wizard/mac/src/LicenseWin.c +++ b/xpinstall/wizard/mac/src/LicenseWin.c @@ -287,10 +287,9 @@ InLicenseContent(EventRecord* evt, WindowPtr wCurrPtr) } } return; - break; /* <--- what is this for? */ } - HLockHi((Handle)gControls->backB); + HLock((Handle)gControls->backB); r = (**(gControls->backB)).contrlRect; HUnlock((Handle)gControls->backB); if (PtInRect( localPt, &r)) @@ -300,7 +299,7 @@ InLicenseContent(EventRecord* evt, WindowPtr wCurrPtr) gDone = true; /* Decline pressed */ } - HLockHi((Handle)gControls->nextB); + HLock((Handle)gControls->nextB); r = (**(gControls->nextB)).contrlRect; HUnlock((Handle)gControls->nextB); if (PtInRect( localPt, &r)) diff --git a/xpinstall/wizard/mac/src/MacInstallWizard.c b/xpinstall/wizard/mac/src/MacInstallWizard.c index 4fed817cdf23..960c1d4ec42f 100644 --- a/xpinstall/wizard/mac/src/MacInstallWizard.c +++ b/xpinstall/wizard/mac/src/MacInstallWizard.c @@ -32,7 +32,6 @@ Boolean gSDDlg = false; WindowPtr gWPtr = NULL; short gCurrWin = 0; InstWiz *gControls = NULL; -static Boolean bInShutdown = false; EventProc gSDIEvtHandler; /* SDI */ SDI_NETINSTALL gInstFunc; @@ -158,10 +157,10 @@ InitOptObject(void) /* ComponentsWin options */ for (i=0; icfg->st[0].comp[i] == kNotInSetupType) - gControls->opt->compSelected[i] = kNotSelected; - else if (gControls->cfg->st[0].comp[i] == kInSetupType) + if ((icfg->st[0].numComps) && (gControls->cfg->st[0].comp[i] == kInSetupType)) gControls->opt->compSelected[i] = kSelected; + else + gControls->opt->compSelected[i] = kNotSelected; } } @@ -255,7 +254,7 @@ void MainEventLoop(void) if (gSDDlg) YieldToAnyThread(); /* SmartDownload dialog thread */ - if (!gDone && !bInShutdown) /* after cx switch back ensure not done */ + if (!gDone) /* after cx switch back ensure not done */ { if(WaitNextEvent(everyEvent, &evt, 0, NULL)) { @@ -283,7 +282,10 @@ void MainEventLoop(void) void ErrorHandler(void) { -//TODO: this needs to be fixed. +// TO DO +// * throw up an error dialog +// * handle a "fatality" parameter for recovery + SysBeep(10); gDone = true; } @@ -293,7 +295,6 @@ void Shutdown(void) WindowPtr frontWin; long MIWMagic = 0; - bInShutdown = true; UnloadSDLib(&gConnID); /* deallocate config object */ @@ -305,7 +306,7 @@ void Shutdown(void) /* deallocate all controls */ #if 0 -/* XXX gets dispose by DisposeWindow() ? */ +/* XXX gets disposed by DisposeWindow() ? */ if (gControls->nextB) DisposeControl(gControls->nextB); if (gControls->backB) diff --git a/xpinstall/wizard/mac/src/Parser.c b/xpinstall/wizard/mac/src/Parser.c index cc8d15c63db5..c609cdacd4f6 100644 --- a/xpinstall/wizard/mac/src/Parser.c +++ b/xpinstall/wizard/mac/src/Parser.c @@ -274,7 +274,7 @@ PopulateCompWinKeys(char *cfgText) currKey = PascalToC(pkey); Handle sizeH = NewHandleClear(4); // long is four bytes FillKeyValueUsingName(currSName, currKey, sizeH, cfgText); - HLockHi(sizeH); + HLock(sizeH); gControls->cfg->comp[i].size = atol(*sizeH); HUnlock(sizeH); DisposeHandle(sizeH); @@ -410,7 +410,7 @@ PopulateSetupTypeWinKeys(char *cfgText) currCompName = NewPtrClear(kKeyMaxLen); strncpy(currCompName, currSNameBuf, strlen(currSNameBuf)); - HLockHi(currVal); + HLock(currVal); cNumIdx = strspn(currCompName, *currVal); compIdx = *currVal+cNumIdx; compNum = atoi(compIdx); diff --git a/xpinstall/wizard/mac/src/SetupTypeWin.c b/xpinstall/wizard/mac/src/SetupTypeWin.c index 9d56760b80c7..448fa0b6d7c9 100644 --- a/xpinstall/wizard/mac/src/SetupTypeWin.c +++ b/xpinstall/wizard/mac/src/SetupTypeWin.c @@ -85,8 +85,11 @@ ShowSetupTypeWin(void) //Draw1Control(gControls->stw->instType); // setup type desc TE init and default item desc display - HLockHi((Handle)gControls->stw->instDescBox); - viewRect = (*(gControls->stw->instDescBox))->contrlRect; + HLock((Handle)gControls->stw->instDescBox); + SetRect(&viewRect, (*(gControls->stw->instDescBox))->contrlRect.left, + (*(gControls->stw->instDescBox))->contrlRect.top, + (*(gControls->stw->instDescBox))->contrlRect.right, + (*(gControls->stw->instDescBox))->contrlRect.bottom); HUnlock((Handle)gControls->stw->instDescBox); InsetRect(&viewRect, kTxtRectPad, kTxtRectPad); @@ -95,7 +98,7 @@ ShowSetupTypeWin(void) TextFace(normal); TextSize(12); gControls->stw->instDescTxt = TENew( &viewRect, &viewRect); - HLockHi(gControls->cfg->st[gControls->opt->instChoice - 1].longDesc); + HLock(gControls->cfg->st[gControls->opt->instChoice - 1].longDesc); txtSize = strlen(*gControls->cfg->st[gControls->opt->instChoice - 1].longDesc); TEInsert( *gControls->cfg->st[gControls->opt->instChoice - 1].longDesc, txtSize, gControls->stw->instDescTxt); TESetAlignment( teFlushDefault, gControls->stw->instDescTxt); @@ -105,7 +108,7 @@ ShowSetupTypeWin(void) volName = (unsigned char **)NewPtrClear(sizeof(unsigned char *)); GetAllVInfo(volName, &numVols); gControls->stw->numVols = numVols; - HLockHi((Handle)gControls->stw->destLoc); + HLock((Handle)gControls->stw->destLoc); pvtDataHdl = (PopupPrivateData **) (*(gControls->stw->destLoc))->contrlData; popupMenu = (MenuHandle) (**pvtDataHdl).mHandle; for (i=0; iwhere; GlobalToLocal( &localPt); - HLockHi((Handle)gControls->stw->instType); - r = (**(gControls->stw->instType)).contrlRect; + HLock((Handle)gControls->stw->instType); + SetRect(&r, (**(gControls->stw->instType)).contrlRect.left, + (**(gControls->stw->instType)).contrlRect.top, + (**(gControls->stw->instType)).contrlRect.right, + (**(gControls->stw->instType)).contrlRect.bottom); HUnlock((Handle)gControls->stw->instType); if (PtInRect(localPt, &r)) { @@ -212,8 +218,12 @@ InSetupTypeContent(EventRecord* evt, WindowPtr wCurrPtr) gControls->opt->instChoice = GetControlValue(currCntl); - r = (**(gControls->stw->instDescTxt)).viewRect; - HLockHi(gControls->cfg->st[gControls->opt->instChoice-1].longDesc); + SetRect(&r, (**(gControls->stw->instDescTxt)).viewRect.left, + (**(gControls->stw->instDescTxt)).viewRect.top, + (**(gControls->stw->instDescTxt)).viewRect.right, + (**(gControls->stw->instDescTxt)).viewRect.bottom); + + HLock(gControls->cfg->st[gControls->opt->instChoice-1].longDesc); len = strlen(*gControls->cfg->st[gControls->opt->instChoice-1].longDesc); TESetText( *gControls->cfg->st[gControls->opt->instChoice-1].longDesc, len, gControls->stw->instDescTxt); HUnlock(gControls->cfg->st[gControls->opt->instChoice-1].longDesc); @@ -223,7 +233,10 @@ InSetupTypeContent(EventRecord* evt, WindowPtr wCurrPtr) } HLockHi((Handle)gControls->stw->destLoc); - r = (**(gControls->stw->destLoc)).contrlRect; + SetRect(&r, (**(gControls->stw->destLoc)).contrlRect.left, + (**(gControls->stw->destLoc)).contrlRect.top, + (**(gControls->stw->destLoc)).contrlRect.right, + (**(gControls->stw->destLoc)).contrlRect.bottom); HUnlock((Handle)gControls->stw->destLoc); if (PtInRect(localPt, &r)) { @@ -380,9 +393,9 @@ void DrawDiskSpaceMsgs(short vRefNum) { HVolumeParam pb; - OSErr err; + OSErr err, reserr; long freeSpace; - TEHandle diskSpaceMsgH; + TEHandle dsAvailH, dsNeededH; Rect instDescBox, viewRect; Handle instDescRectH; Str255 msg; @@ -398,8 +411,16 @@ DrawDiskSpaceMsgs(short vRefNum) freeSpace = pb.ioVFrBlk * pb.ioVAlBlkSiz; // in bytes freeSpace /= 1024; // translate to kilobytes + instDescRectH = NULL; instDescRectH = Get1Resource('RECT', rCompListBox); - HLockHi(instDescRectH); + reserr = ResError(); + if (reserr!=noErr || !instDescRectH) + { + ErrorHandler(); + return; + } + + HLock(instDescRectH); instDescBox = (Rect) **((Rect**)instDescRectH); SetRect( &viewRect, instDescBox.left, instDescBox.bottom + 2, instDescBox.right, instDescBox.bottom + 12 ); @@ -411,7 +432,13 @@ DrawDiskSpaceMsgs(short vRefNum) TextSize(9); TextFont(applFont); EraseRect(&viewRect); - diskSpaceMsgH = TENew(&viewRect, &viewRect); + dsAvailH = NULL; + dsAvailH = TENew(&viewRect, &viewRect); + if (!dsAvailH) + { + ErrorHandler(); + return; + } /* Get the "Disk Space Available: " string */ GetIndString( msg, rStringList, sDiskSpcAvail ); @@ -427,16 +454,21 @@ DrawDiskSpaceMsgs(short vRefNum) strcat( cmsg, ckb ); /* draw the disk space available string */ - TEInsert( cmsg, strlen(cmsg), diskSpaceMsgH ); - TEUpdate( &viewRect, diskSpaceMsgH ); + TEInsert( cmsg, strlen(cmsg), dsAvailH ); + TEUpdate( &viewRect, dsAvailH ); - /* recycle msg pointer and handle */ - TEDispose(diskSpaceMsgH); + /* recycle msg pointer */ DisposePtr((char*)cmsg); SetRect( &viewRect, instDescBox.right - 150, instDescBox.bottom + 2, instDescBox.right, instDescBox.bottom + 12 ); - diskSpaceMsgH = TENew( &viewRect, &viewRect ); + dsNeededH = NULL; + dsNeededH = TENew( &viewRect, &viewRect ); + if (!dsNeededH) + { + ErrorHandler(); + return; + } /* Get the "Disk Space Needed: " string */ GetIndString( msg, rStringList, sDiskSpcNeeded ); @@ -452,14 +484,22 @@ DrawDiskSpaceMsgs(short vRefNum) strcat( cmsg, ckb ); /* draw the disk space available string */ - TEInsert( cmsg, strlen(cmsg), diskSpaceMsgH ); - TEUpdate( &viewRect, diskSpaceMsgH ); + TEInsert( cmsg, strlen(cmsg), dsNeededH ); + TEUpdate( &viewRect, dsNeededH ); - DisposePtr((char*)ckb); - free(cSpaceNeeded); // malloc'd, not NewPtrClear'd - free(cfreeSpace); // malloc'd, not NewPtrClear'd - DisposePtr((char*)cmsg); - TEDispose(diskSpaceMsgH); + if (dsAvailH) + TEDispose(dsAvailH); + if (dsNeededH) + TEDispose(dsNeededH); + + if (ckb) + DisposePtr((Ptr)ckb); + if (cSpaceNeeded) + free(cSpaceNeeded); // malloc'd, not NewPtrClear'd + if (cfreeSpace) + free(cfreeSpace); // malloc'd, not NewPtrClear'd + if (cmsg) + DisposePtr((Ptr)cmsg); TextFont(systemFont); TextSize(12); } @@ -492,9 +532,18 @@ ClearDiskSpaceMsgs(void) { Rect instDescBox, viewRect; Handle instDescRectH; + OSErr reserr; + instDescRectH = NULL; instDescRectH = Get1Resource('RECT', rCompListBox); - HLockHi(instDescRectH); + reserr = ResError(); + if (reserr!=noErr || !instDescRectH) + { + ErrorHandler(); + return; + } + + HLock(instDescRectH); instDescBox = (Rect) **((Rect**)instDescRectH); SetRect( &viewRect, instDescBox.left, instDescBox.bottom + 2, instDescBox.right, instDescBox.bottom + 12 ); diff --git a/xpinstall/wizard/mac/src/TerminalWin.c b/xpinstall/wizard/mac/src/TerminalWin.c index 39b7f3f6762f..af1fa5cc501c 100644 --- a/xpinstall/wizard/mac/src/TerminalWin.c +++ b/xpinstall/wizard/mac/src/TerminalWin.c @@ -96,20 +96,22 @@ UpdateTerminalWin(void) void InTerminalContent(EventRecord* evt, WindowPtr wCurrPtr) { - Point localPt; - Rect r; + Point localPt; + Rect r; ControlPartCode part; - ThreadID tid; - - GrafPtr oldPort; + ThreadID tid; + GrafPtr oldPort; GetPort(&oldPort); SetPort(wCurrPtr); localPt = evt->where; GlobalToLocal( &localPt); - HLockHi((Handle)gControls->backB); - r = (**(gControls->backB)).contrlRect; + HLock((Handle)gControls->backB); + SetRect(&r, (**(gControls->backB)).contrlRect.left, + (**(gControls->backB)).contrlRect.top, + (**(gControls->backB)).contrlRect.right, + (**(gControls->backB)).contrlRect.bottom); HUnlock((Handle)gControls->backB); if (PtInRect( localPt, &r)) { @@ -137,8 +139,11 @@ InTerminalContent(EventRecord* evt, WindowPtr wCurrPtr) } } - HLockHi((Handle)gControls->nextB); - r = (**(gControls->nextB)).contrlRect; + HLock((Handle)gControls->nextB); + SetRect(&r, (**(gControls->nextB)).contrlRect.left, + (**(gControls->nextB)).contrlRect.top, + (**(gControls->nextB)).contrlRect.right, + (**(gControls->nextB)).contrlRect.bottom); HUnlock((Handle)gControls->nextB); if (PtInRect( localPt, &r)) { @@ -158,7 +163,8 @@ SpawnSDThread(ThreadEntryProcPtr threadProc, ThreadID *tid) OSErr err; err = NewThread(kCooperativeThread, (ThreadEntryProcPtr)threadProc, (void*) nil, - 20000, kCreateIfNeeded, (void**)nil, tid); + 0, kCreateIfNeeded, (void**)nil, tid); + // ^---- 0 means gimme the default stack size from Thread Manager if (err == noErr) YieldToThread(*tid); /* force ctx switch */ else diff --git a/xpinstall/wizard/mac/src/XPInstallGlue.c b/xpinstall/wizard/mac/src/XPInstallGlue.c index 487ec3822daf..fd718e0eb4e1 100644 --- a/xpinstall/wizard/mac/src/XPInstallGlue.c +++ b/xpinstall/wizard/mac/src/XPInstallGlue.c @@ -59,8 +59,11 @@ if (NS_FAILED(rv)) \ return rv; \ } -/* XXX temporary... */ +#ifdef DEBUG #define XPISTUB_DLL "\pxpistubDebug.shlb" +#else +#define XPISTUB_DLL "\pxpistub.shlb" +#endif void @@ -99,9 +102,9 @@ RunAllXPIs(short vRefNum, long dirID) err = FSMakeFSSpec(vRefNum, dirID, "\pmozilla.jar", &xpiSpec); err = FSMakeFSSpec(vRefNum, dirID, 0, &tgtDirSpec); if (err==noErr) - err = RunXPI(xpiSpec, tgtDirSpec); + err = RunXPI(xpiSpec, tgtDirSpec); else - ErrorHandler(); + ErrorHandler(); return err; }