Skip to content

Commit ef6b6ab

Browse files
author
benjamin%smedbergs.us
committed
Bug 347183 - frozen-linkage access to null/singleton/union/array enumerators, r=darin
1 parent 60276d6 commit ef6b6ab

32 files changed

+278
-1214
lines changed

mailnews/addrbook/src/nsAbLDAPDirFactory.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,7 @@ NS_IMETHODIMP nsAbLDAPDirFactory::CreateDirectory(nsIAbDirectoryProperties *aPro
128128
rv = directory->SetDirPrefId(prefName);
129129
NS_ENSURE_SUCCESS(rv, rv);
130130

131-
NS_IF_ADDREF(*aDirectories = new nsSingletonEnumerator(directory));
132-
return *aDirectories ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
131+
return NS_NewSingletonEnumerator(aDirectories, directory);
133132
}
134133

135134
/* void deleteDirectory (in nsIAbDirectory directory); */

mailnews/addrbook/src/nsAbLDAPDirectory.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
#include "nsIPrefBranch.h"
6060
#include "nsCOMArray.h"
6161
#include "nsArrayEnumerator.h"
62+
#include "nsEnumeratorUtils.h"
6263
#include "nsIAbLDAPAttributeMap.h"
6364

6465
nsAbLDAPDirectory::nsAbLDAPDirectory() :

mailnews/addrbook/src/nsAbMDBDirFactory.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,7 @@ NS_IMETHODIMP nsAbMDBDirFactory::CreateDirectory(nsIAbDirectoryProperties *aProp
179179
rv = RemoveMailListDBListeners (listDatabase, directory);
180180
NS_ENSURE_SUCCESS(rv, rv);
181181

182-
nsSingletonEnumerator* cursor = new nsSingletonEnumerator(directory);
183-
if(!cursor)
184-
return NS_ERROR_NULL_POINTER;
185-
186-
NS_IF_ADDREF(*_retval = cursor);
187-
return rv;
182+
return NS_NewSingletonEnumerator(_retval, directory);
188183
}
189184

190185

mailnews/addrbook/src/nsDirectoryDataSource.cpp

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -240,14 +240,8 @@ NS_IMETHODIMP nsAbDirectoryDataSource::GetTargets(nsIRDFResource* source,
240240
(kNC_IsSecure == property) ||
241241
(kNC_IsWriteable == property) ||
242242
(kNC_DirTreeNameSort == property))
243-
{
244-
nsSingletonEnumerator* cursor =
245-
new nsSingletonEnumerator(property);
246-
if (cursor == nsnull)
247-
return NS_ERROR_OUT_OF_MEMORY;
248-
NS_ADDREF(cursor);
249-
*targets = cursor;
250-
return NS_OK;
243+
{
244+
return NS_NewSingletonEnumerator(targets, property);
251245
}
252246
}
253247
return NS_NewEmptyEnumerator(targets);
@@ -319,15 +313,7 @@ NS_IMETHODIMP nsAbDirectoryDataSource::ArcLabelsOut(nsIRDFResource* source,
319313
NS_NewISupportsArray(getter_AddRefs(arcs));
320314
}
321315

322-
nsArrayEnumerator* cursor =
323-
new nsArrayEnumerator(arcs);
324-
325-
if (cursor == nsnull)
326-
return NS_ERROR_OUT_OF_MEMORY;
327-
NS_ADDREF(cursor);
328-
*labels = cursor;
329-
330-
return NS_OK;
316+
return NS_NewArrayEnumerator(labels, arcs);
331317
}
332318

333319
nsresult

mailnews/base/search/src/nsMsgFilterDataSource.cpp

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,7 @@ nsMsgFilterDataSource::GetTargets(nsIRDFResource *aSource,
125125

126126
if (NS_FAILED(rv)) {
127127
// no filter delegate
128-
nsSingletonEnumerator *cursor = new nsSingletonEnumerator(nsnull);
129-
NS_ENSURE_TRUE(cursor, NS_ERROR_OUT_OF_MEMORY);
130-
131-
*aResult = cursor;
132-
NS_ADDREF(*aResult);
133-
return NS_OK;
128+
return NS_NewSingletonEnumerator(aResult, nsnull);
134129
}
135130

136131

@@ -162,12 +157,7 @@ nsMsgFilterDataSource::GetTargets(nsIRDFResource *aSource,
162157
}
163158
}
164159

165-
nsArrayEnumerator *cursor = new nsArrayEnumerator(resourceList);
166-
NS_ENSURE_TRUE(cursor, NS_ERROR_OUT_OF_MEMORY);
167-
168-
*aResult = cursor;
169-
NS_ADDREF(*aResult);
170-
return NS_OK;
160+
return NS_NewArrayEnumerator(aResult, resourceList);
171161
}
172162

173163
NS_IMETHODIMP
@@ -259,14 +249,7 @@ nsMsgFilterDataSource::ArcLabelsOut(nsIRDFResource *aSource,
259249
return NS_RDF_NO_VALUE;
260250
}
261251

262-
nsArrayEnumerator* enumerator =
263-
new nsArrayEnumerator(arcs);
264-
NS_ENSURE_TRUE(enumerator, NS_ERROR_OUT_OF_MEMORY);
265-
266-
*aResult = enumerator;
267-
NS_ADDREF(*aResult);
268-
269-
return NS_OK;
252+
return NS_NewArrayEnumerator(aResult, arcs);
270253
}
271254

272255
// takes a base resource, like mailbox://username@host/folder and returns

mailnews/base/src/nsMsgFolderDataSource.cpp

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -534,13 +534,7 @@ NS_IMETHODIMP nsMsgFolderDataSource::GetTargets(nsIRDFResource* source,
534534
(kNC_SyncDisabled == property) ||
535535
(kNC_CanSearchMessages == property))
536536
{
537-
nsSingletonEnumerator* cursor =
538-
new nsSingletonEnumerator(property);
539-
if (cursor == nsnull)
540-
return NS_ERROR_OUT_OF_MEMORY;
541-
NS_ADDREF(cursor);
542-
*targets = cursor;
543-
rv = NS_OK;
537+
return NS_NewSingletonEnumerator(targets, property);
544538
}
545539
}
546540
if(!*targets)
@@ -2375,11 +2369,7 @@ NS_IMETHODIMP nsMsgFlatFolderDataSource::GetTargets(nsIRDFResource* source,
23752369
return NS_NewArrayEnumerator(targets, allFolders);
23762370
}
23772371
}
2378-
nsSingletonEnumerator* cursor = new nsSingletonEnumerator(property);
2379-
if (cursor == nsnull)
2380-
return NS_ERROR_OUT_OF_MEMORY;
2381-
NS_ADDREF(*targets = cursor);
2382-
return NS_OK;
2372+
return NS_NewSingletonEnumerator(targets, property);
23832373
}
23842374

23852375

mailnews/base/src/nsSubscribeDataSource.cpp

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -266,13 +266,7 @@ nsSubscribeDataSource::GetChildren(nsISubscribableServer *aServer,
266266
// GetChildren() can fail if there are no children
267267
if (NS_FAILED(rv)) return rv;
268268

269-
nsISimpleEnumerator* result = new nsArrayEnumerator(children);
270-
if (!result) return NS_ERROR_OUT_OF_MEMORY;
271-
272-
NS_ADDREF(result);
273-
*aResult = result;
274-
275-
return NS_OK;
269+
return NS_NewArrayEnumerator(aResult, children);
276270
}
277271

278272
NS_IMETHODIMP
@@ -324,45 +318,31 @@ nsSubscribeDataSource::GetTargets(nsIRDFResource *source,
324318
rv = mRDFService->GetLiteral(leafNameStr, getter_AddRefs(leafName));
325319
NS_ENSURE_SUCCESS(rv,rv);
326320

327-
nsISimpleEnumerator* result = new nsSingletonEnumerator(leafName);
328-
if (!result) return NS_ERROR_OUT_OF_MEMORY;
329-
330-
NS_IF_ADDREF(*targets = result);
331-
return NS_OK;
321+
return NS_NewSingletonEnumerator(targets, leafName);
332322
}
333323
else if (property == kNC_Subscribed.get()) {
334324
PRBool isSubscribed;
335325
rv = server->IsSubscribed(relativePath, &isSubscribed);
336326
NS_ENSURE_SUCCESS(rv,rv);
337327

338-
nsISimpleEnumerator* result = new nsSingletonEnumerator(isSubscribed ? kTrueLiteral : kFalseLiteral);
339-
if (!result) return NS_ERROR_OUT_OF_MEMORY;
340-
341-
NS_IF_ADDREF(*targets = result);
342-
return NS_OK;
328+
return NS_NewSingletonEnumerator(targets,
329+
isSubscribed ? kTrueLiteral : kFalseLiteral);
343330
}
344331
else if (property == kNC_Subscribable.get()) {
345332
PRBool isSubscribable;
346333
rv = server->IsSubscribable(relativePath, &isSubscribable);
347334
NS_ENSURE_SUCCESS(rv,rv);
348335

349-
nsISimpleEnumerator* result = new nsSingletonEnumerator(isSubscribable ? kTrueLiteral : kFalseLiteral);
350-
if (!result) return NS_ERROR_OUT_OF_MEMORY;
351-
352-
NS_IF_ADDREF(*targets = result);
353-
return NS_OK;
336+
return NS_NewSingletonEnumerator(targets,
337+
isSubscribable ? kTrueLiteral : kFalseLiteral);
354338
}
355339
else if (property == kNC_Name.get()) {
356340
nsCOMPtr<nsIRDFLiteral> name;
357341
rv = mRDFService->GetLiteral(NS_ConvertUTF8toUTF16(relativePath).get(),
358342
getter_AddRefs(name));
359343
NS_ENSURE_SUCCESS(rv,rv);
360344

361-
nsISimpleEnumerator* result = new nsSingletonEnumerator(name);
362-
if (!result) return NS_ERROR_OUT_OF_MEMORY;
363-
364-
NS_IF_ADDREF(*targets = result);
365-
return NS_OK;
345+
return NS_NewSingletonEnumerator(targets, name);
366346
}
367347
else if (property == kNC_ServerType.get()) {
368348
nsXPIDLCString serverTypeStr;
@@ -374,11 +354,7 @@ nsSubscribeDataSource::GetTargets(nsIRDFResource *source,
374354
getter_AddRefs(serverType));
375355
NS_ENSURE_SUCCESS(rv,rv);
376356

377-
nsISimpleEnumerator* result = new nsSingletonEnumerator(serverType);
378-
if (!result) return NS_ERROR_OUT_OF_MEMORY;
379-
380-
NS_IF_ADDREF(*targets = result);
381-
return NS_OK;
357+
return NS_NewSingletonEnumerator(targets, serverType);
382358
}
383359
else {
384360
// do nothing
@@ -647,12 +623,7 @@ nsSubscribeDataSource::ArcLabelsOut(nsIRDFResource *source,
647623
array->AppendElement(kNC_Child);
648624
}
649625

650-
nsISimpleEnumerator* result = new nsArrayEnumerator(array);
651-
if (! result) return NS_ERROR_OUT_OF_MEMORY;
652-
653-
NS_ADDREF(result);
654-
*labels = result;
655-
return NS_OK;
626+
return NS_NewArrayEnumerator(labels, array);
656627
}
657628

658629
NS_IMETHODIMP

rdf/base/src/nsInMemoryDataSource.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1789,12 +1789,7 @@ InMemoryDataSource::GetAllResources(nsISimpleEnumerator** aResult)
17891789
// Enumerate all of our entries into an nsISupportsArray.
17901790
PL_DHashTableEnumerate(&mForwardArcs, ResourceEnumerator, values.get());
17911791

1792-
*aResult = new nsArrayEnumerator(values);
1793-
if (! *aResult)
1794-
return NS_ERROR_OUT_OF_MEMORY;
1795-
1796-
NS_ADDREF(*aResult);
1797-
return NS_OK;
1792+
return NS_NewArrayEnumerator(aResult, values);
17981793
}
17991794

18001795
NS_IMETHODIMP

rdf/datasource/src/nsFileSystemDataSource.cpp

Lines changed: 12 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -522,17 +522,10 @@ FileSystemDataSource::GetTargets(nsIRDFResource *source,
522522
}
523523
else if (property == mNC_pulse)
524524
{
525-
nsIRDFLiteral *pulseLiteral;
526-
mRDFService->GetLiteral(NS_LITERAL_STRING("12").get(), &pulseLiteral);
527-
nsISimpleEnumerator* result = new nsSingletonEnumerator(pulseLiteral);
528-
NS_RELEASE(pulseLiteral);
529-
530-
if (! result)
531-
return NS_ERROR_OUT_OF_MEMORY;
532-
533-
NS_ADDREF(result);
534-
*targets = result;
535-
return NS_OK;
525+
nsCOMPtr<nsIRDFLiteral> pulseLiteral;
526+
mRDFService->GetLiteral(NS_LITERAL_STRING("12").get(),
527+
getter_AddRefs(pulseLiteral));
528+
return NS_NewSingletonEnumerator(targets, pulseLiteral);
536529
}
537530
}
538531
else if (isFileURI(source))
@@ -547,27 +540,15 @@ FileSystemDataSource::GetTargets(nsIRDFResource *source,
547540
rv = GetName(source, getter_AddRefs(name));
548541
if (NS_FAILED(rv)) return rv;
549542

550-
nsISimpleEnumerator* result = new nsSingletonEnumerator(name);
551-
if (! result)
552-
return NS_ERROR_OUT_OF_MEMORY;
553-
554-
NS_ADDREF(result);
555-
*targets = result;
556-
return NS_OK;
543+
return NS_NewSingletonEnumerator(targets, name);
557544
}
558545
else if (property == mNC_URL)
559546
{
560547
nsCOMPtr<nsIRDFLiteral> url;
561548
rv = GetURL(source, nsnull, getter_AddRefs(url));
562549
if (NS_FAILED(rv)) return rv;
563550

564-
nsISimpleEnumerator* result = new nsSingletonEnumerator(url);
565-
if (! result)
566-
return NS_ERROR_OUT_OF_MEMORY;
567-
568-
NS_ADDREF(result);
569-
*targets = result;
570-
return NS_OK;
551+
return NS_NewSingletonEnumerator(targets, url);
571552
}
572553
else if (property == mRDF_type)
573554
{
@@ -581,14 +562,7 @@ FileSystemDataSource::GetTargets(nsIRDFResource *source,
581562
rv = mRDFService->GetLiteral(url.get(), getter_AddRefs(literal));
582563
if (NS_FAILED(rv)) return rv;
583564

584-
nsISimpleEnumerator* result = new nsSingletonEnumerator(literal);
585-
586-
if (! result)
587-
return NS_ERROR_OUT_OF_MEMORY;
588-
589-
NS_ADDREF(result);
590-
*targets = result;
591-
return NS_OK;
565+
return NS_NewSingletonEnumerator(targets, literal);
592566
}
593567
else if (property == mNC_pulse)
594568
{
@@ -597,14 +571,7 @@ FileSystemDataSource::GetTargets(nsIRDFResource *source,
597571
getter_AddRefs(pulseLiteral));
598572
if (NS_FAILED(rv)) return rv;
599573

600-
nsISimpleEnumerator* result = new nsSingletonEnumerator(pulseLiteral);
601-
602-
if (! result)
603-
return NS_ERROR_OUT_OF_MEMORY;
604-
605-
NS_ADDREF(result);
606-
*targets = result;
607-
return NS_OK;
574+
return NS_NewSingletonEnumerator(targets, pulseLiteral);
608575
}
609576
}
610577

@@ -815,13 +782,7 @@ FileSystemDataSource::ArcLabelsOut(nsIRDFResource *source,
815782
array->AppendElement(mNC_Child);
816783
array->AppendElement(mNC_pulse);
817784

818-
nsISimpleEnumerator* result = new nsArrayEnumerator(array);
819-
if (! result)
820-
return NS_ERROR_OUT_OF_MEMORY;
821-
822-
NS_ADDREF(result);
823-
*labels = result;
824-
return NS_OK;
785+
return NS_NewArrayEnumerator(labels, array);
825786
}
826787
else if (isFileURI(source))
827788
{
@@ -842,13 +803,7 @@ FileSystemDataSource::ArcLabelsOut(nsIRDFResource *source,
842803
array->AppendElement(mNC_pulse);
843804
}
844805

845-
nsISimpleEnumerator* result = new nsArrayEnumerator(array);
846-
if (! result)
847-
return NS_ERROR_OUT_OF_MEMORY;
848-
849-
NS_ADDREF(result);
850-
*labels = result;
851-
return NS_OK;
806+
return NS_NewArrayEnumerator(labels, array);
852807
}
853808

854809
return NS_NewEmptyEnumerator(labels);
@@ -1041,14 +996,7 @@ FileSystemDataSource::GetVolumeList(nsISimpleEnumerator** aResult)
1041996
}
1042997
#endif
1043998

1044-
nsISimpleEnumerator* result = new nsArrayEnumerator(volumes);
1045-
if (! result)
1046-
return NS_ERROR_OUT_OF_MEMORY;
1047-
1048-
NS_ADDREF(result);
1049-
*aResult = result;
1050-
1051-
return NS_OK;
999+
return NS_NewArrayEnumerator(aResult, volumes);
10521000
}
10531001

10541002

@@ -1226,18 +1174,9 @@ FileSystemDataSource::GetFolderList(nsIRDFResource *source, PRBool allowHidden,
12261174
break;
12271175
}
12281176

1229-
nsISimpleEnumerator* result = new nsArrayEnumerator(nameArray);
1230-
if (! result)
1231-
return NS_ERROR_OUT_OF_MEMORY;
1232-
1233-
NS_ADDREF(result);
1234-
*aResult = result;
1235-
1236-
return NS_OK;
1177+
return NS_NewArrayEnumerator(aResult, nameArray);
12371178
}
12381179

1239-
1240-
12411180
nsresult
12421181
FileSystemDataSource::GetLastMod(nsIRDFResource *source, nsIRDFDate **aResult)
12431182
{

0 commit comments

Comments
 (0)