Adding back member to store error for nsRegistryNode and nsRegistryValue. This gets it working again.

git-svn-id: svn://10.0.0.236/trunk@36277 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
dp%netscape.com
1999-06-22 13:58:12 +00:00
parent 9389404b84
commit 4cac2072ff
2 changed files with 34 additions and 26 deletions

View File

@@ -166,6 +166,7 @@ protected:
RKEY mKey; // Key this node is under.
REGENUM mEnum; // Copy of corresponding content of parent enumerator.
char mName[MAXREGPATHLEN]; // Buffer to hold name.
REGERR mErr; // XXX This causes this class to be NON THREAD SAFE
}; // nsRegistryNode
@@ -194,6 +195,7 @@ protected:
REGENUM mEnum; // Copy of corresponding content of parent enumerator.
REGINFO mInfo; // Value info.
char mName[MAXREGNAMELEN]; // Buffer to hold name.
REGERR mErr; // XXX This causes this class to be NON THREAD SAFE
}; // nsRegistryValue
@@ -1202,7 +1204,7 @@ NS_IMETHODIMP nsRegValueEnumerator::advance() {
| our name. We use mErr==-1 to indicate we haven't fetched the name yet. |
------------------------------------------------------------------------------*/
nsRegistryNode::nsRegistryNode( HREG hReg, RKEY key, REGENUM slot )
: mReg( hReg ), mKey( key ), mEnum( slot ){
: mReg( hReg ), mKey( key ), mEnum( slot ), mErr ( -1 ) {
NS_INIT_REFCNT();
mregLock = PR_NewLock();
@@ -1220,22 +1222,25 @@ nsRegistryNode::~nsRegistryNode()
/*-------------------------- nsRegistryNode::GetName ---------------------------
| If we haven't fetched it yet, get the name of the corresponding subkey now, |
| using NR_RegEnumSubkeys. |
y------------------------------------------------------------------------------*/
------------------------------------------------------------------------------*/
NS_IMETHODIMP nsRegistryNode::GetName( char **result ) {
REGERR err = REGERR_OK;
nsresult rv = NS_OK;
// Make sure there is a place to put the result.
if( result ) {
// Test whether we haven't tried to get it yet.
if( err == -1 ) {
if( mErr == -1 ) {
REGENUM temp = mEnum;
// Get name.
PR_Lock(mregLock);
err = NR_RegEnumSubkeys( mReg, mKey, &temp, mName, sizeof mName, PR_FALSE );
mErr = NR_RegEnumSubkeys( mReg, mKey, &temp, mName, sizeof mName, PR_FALSE );
// Convert result from prior libreg call.
rv = regerr2nsresult( mErr );
PR_Unlock(mregLock);
}
// Convert result from prior libreg call.
rv = regerr2nsresult( err );
else {
// Convert result from prior libreg call.
rv = regerr2nsresult( mErr );
}
if( rv == NS_OK || rv == NS_ERROR_REG_NO_MORE ) {
// worked, return actual result.
*result = PR_strdup( mName );
@@ -1257,7 +1262,7 @@ NS_IMETHODIMP nsRegistryNode::GetName( char **result ) {
| Implemented the same way as the nsRegistryNode ctor. |
------------------------------------------------------------------------------*/
nsRegistryValue::nsRegistryValue( HREG hReg, RKEY key, REGENUM slot )
: mReg( hReg ), mKey( key ), mEnum( slot ) {
: mReg( hReg ), mKey( key ), mEnum( slot ), mErr( -1 ) {
NS_INIT_REFCNT();
mregLock = PR_NewLock();
return;
@@ -1342,17 +1347,16 @@ NS_IMETHODIMP nsRegistryValue::GetValueLength( uint32 *result ) {
| Call NR_RegEnumEntries to set the mInfo/mName data members. |
------------------------------------------------------------------------------*/
nsresult nsRegistryValue::getInfo() {
REGERR err = REGERR_OK;
nsresult rv = NS_OK;
// Test whether we haven't tried to get it yet.
if( err == -1 ) {
if( mErr == -1 ) {
REGENUM temp = mEnum;
// Get name and info.
PR_Lock(mregLock);
err = NR_RegEnumEntries( mReg, mKey, &temp, mName, sizeof mName, &mInfo );
PR_Unlock(mregLock);
mErr = NR_RegEnumEntries( mReg, mKey, &temp, mName, sizeof mName, &mInfo );
// Convert result.
rv = regerr2nsresult( err );
rv = regerr2nsresult( mErr );
PR_Unlock(mregLock);
}
return rv;
}