Bug 479929 - Return value of esd_open_sound not checked correctly. r+sr=roc

This commit is contained in:
Matthew Gregan 2009-02-24 18:06:42 +13:00
parent 620e25b404
commit 404627dddb

View File

@ -131,8 +131,7 @@ nsSound::nsSound()
nsSound::~nsSound() nsSound::~nsSound()
{ {
/* see above comment */ if (esdref >= 0) {
if (esdref != -1) {
EsdCloseType EsdClose = (EsdCloseType) PR_FindFunctionSymbol(elib, "esd_close"); EsdCloseType EsdClose = (EsdCloseType) PR_FindFunctionSymbol(elib, "esd_close");
if (EsdClose) if (EsdClose)
(*EsdClose)(esdref); (*EsdClose)(esdref);
@ -151,19 +150,16 @@ nsSound::Init()
mInited = PR_TRUE; mInited = PR_TRUE;
if (!elib) { if (!elib) {
/* we don't need to do esd_open_sound if we are only going to play files
but we will if we want to do things like streams, etc */
EsdOpenSoundType EsdOpenSound;
elib = PR_LoadLibrary("libesd.so.0"); elib = PR_LoadLibrary("libesd.so.0");
if (elib) { if (elib) {
EsdOpenSound = (EsdOpenSoundType) PR_FindFunctionSymbol(elib, "esd_open_sound"); EsdOpenSoundType EsdOpenSound =
(EsdOpenSoundType) PR_FindFunctionSymbol(elib, "esd_open_sound");
if (!EsdOpenSound) { if (!EsdOpenSound) {
PR_UnloadLibrary(elib); PR_UnloadLibrary(elib);
elib = nsnull; elib = nsnull;
} else { } else {
esdref = (*EsdOpenSound)("localhost"); esdref = (*EsdOpenSound)("localhost");
if (!esdref) { if (esdref < 0) {
PR_UnloadLibrary(elib); PR_UnloadLibrary(elib);
elib = nsnull; elib = nsnull;
} }