зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1289457 - Take advantage of infallible new in XPCNativeSet::NewInstance{,Mutate} to skip checks. r=mrbkap
MozReview-Commit-ID: H4TEMzzT6iK
This commit is contained in:
Родитель
dbb581c9f8
Коммит
82ac383602
|
@ -680,8 +680,6 @@ XPCNativeSet*
|
||||||
XPCNativeSet::NewInstance(XPCNativeInterface** array,
|
XPCNativeSet::NewInstance(XPCNativeInterface** array,
|
||||||
uint16_t count)
|
uint16_t count)
|
||||||
{
|
{
|
||||||
XPCNativeSet* obj = nullptr;
|
|
||||||
|
|
||||||
if (!array || !count)
|
if (!array || !count)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
|
@ -707,10 +705,8 @@ XPCNativeSet::NewInstance(XPCNativeInterface** array,
|
||||||
if (slots > 1)
|
if (slots > 1)
|
||||||
size += (slots - 1) * sizeof(XPCNativeInterface*);
|
size += (slots - 1) * sizeof(XPCNativeInterface*);
|
||||||
void* place = new char[size];
|
void* place = new char[size];
|
||||||
if (place)
|
XPCNativeSet* obj = new(place) XPCNativeSet();
|
||||||
obj = new(place) XPCNativeSet();
|
|
||||||
|
|
||||||
if (obj) {
|
|
||||||
// Stick the nsISupports in front and skip additional nsISupport(s)
|
// Stick the nsISupports in front and skip additional nsISupport(s)
|
||||||
XPCNativeInterface** inp = array;
|
XPCNativeInterface** inp = array;
|
||||||
XPCNativeInterface** outp = (XPCNativeInterface**) &obj->mInterfaces;
|
XPCNativeInterface** outp = (XPCNativeInterface**) &obj->mInterfaces;
|
||||||
|
@ -728,7 +724,6 @@ XPCNativeSet::NewInstance(XPCNativeInterface** array,
|
||||||
}
|
}
|
||||||
obj->mMemberCount = memberCount;
|
obj->mMemberCount = memberCount;
|
||||||
obj->mInterfaceCount = slots;
|
obj->mInterfaceCount = slots;
|
||||||
}
|
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
@ -739,8 +734,6 @@ XPCNativeSet::NewInstanceMutate(XPCNativeSet* otherSet,
|
||||||
XPCNativeInterface* newInterface,
|
XPCNativeInterface* newInterface,
|
||||||
uint16_t position)
|
uint16_t position)
|
||||||
{
|
{
|
||||||
XPCNativeSet* obj = nullptr;
|
|
||||||
|
|
||||||
if (!newInterface)
|
if (!newInterface)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
if (otherSet && position > otherSet->mInterfaceCount)
|
if (otherSet && position > otherSet->mInterfaceCount)
|
||||||
|
@ -752,10 +745,8 @@ XPCNativeSet::NewInstanceMutate(XPCNativeSet* otherSet,
|
||||||
if (otherSet)
|
if (otherSet)
|
||||||
size += otherSet->mInterfaceCount * sizeof(XPCNativeInterface*);
|
size += otherSet->mInterfaceCount * sizeof(XPCNativeInterface*);
|
||||||
void* place = new char[size];
|
void* place = new char[size];
|
||||||
if (place)
|
XPCNativeSet* obj = new(place) XPCNativeSet();
|
||||||
obj = new(place) XPCNativeSet();
|
|
||||||
|
|
||||||
if (obj) {
|
|
||||||
if (otherSet) {
|
if (otherSet) {
|
||||||
obj->mMemberCount = otherSet->GetMemberCount() +
|
obj->mMemberCount = otherSet->GetMemberCount() +
|
||||||
newInterface->GetMemberCount();
|
newInterface->GetMemberCount();
|
||||||
|
@ -774,7 +765,6 @@ XPCNativeSet::NewInstanceMutate(XPCNativeSet* otherSet,
|
||||||
obj->mInterfaceCount = 1;
|
obj->mInterfaceCount = 1;
|
||||||
obj->mInterfaces[0] = newInterface;
|
obj->mInterfaces[0] = newInterface;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче