Bug 1551647. Stop using [array] in nsIProperties. r=froydnj

Differential Revision: https://phabricator.services.mozilla.com/D31110

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Boris Zbarsky 2019-05-14 18:46:13 +00:00
Родитель cdb0ff84d7
Коммит d24853373a
5 изменённых файлов: 9 добавлений и 28 удалений

Просмотреть файл

@ -1009,13 +1009,12 @@ RasterImage::Undefine(const char* prop) {
}
NS_IMETHODIMP
RasterImage::GetKeys(uint32_t* count, char*** keys) {
RasterImage::GetKeys(nsTArray<nsCString>& keys) {
if (!mProperties) {
*count = 0;
*keys = nullptr;
keys.Clear();
return NS_OK;
}
return mProperties->GetKeys(count, keys);
return mProperties->GetKeys(keys);
}
void RasterImage::Discard() {

Просмотреть файл

@ -42,5 +42,5 @@ interface nsIProperties : nsISupports
/**
* Returns an array of the keys.
*/
void getKeys(out uint32_t count, [array, size_is(count), retval] out string keys);
Array<ACString> getKeys();
};

Просмотреть файл

@ -543,7 +543,7 @@ nsPersistentProperties::Has(const char* aProp, bool* aResult) {
}
NS_IMETHODIMP
nsPersistentProperties::GetKeys(uint32_t* aCount, char*** aKeys) {
nsPersistentProperties::GetKeys(nsTArray<nsCString>& aKeys) {
return NS_ERROR_NOT_IMPLEMENTED;
}

Просмотреть файл

@ -52,32 +52,14 @@ nsProperties::Has(const char* prop, bool* result) {
}
NS_IMETHODIMP
nsProperties::GetKeys(uint32_t* aCount, char*** aKeys) {
if (NS_WARN_IF(!aCount) || NS_WARN_IF(!aKeys)) {
return NS_ERROR_INVALID_ARG;
}
nsProperties::GetKeys(nsTArray<nsCString>& aKeys) {
uint32_t count = Count();
char** keys = (char**)moz_xmalloc(count * sizeof(char*));
uint32_t j = 0;
aKeys.SetCapacity(count);
for (auto iter = this->Iter(); !iter.Done(); iter.Next()) {
const char* key = iter.Key();
keys[j] = strdup(key);
if (!keys[j]) {
// Free 'em all
for (uint32_t i = 0; i < j; i++) {
free(keys[i]);
}
free(keys);
return NS_ERROR_OUT_OF_MEMORY;
}
j++;
aKeys.AppendElement(iter.Key());
}
*aCount = count;
*aKeys = keys;
return NS_OK;
}

Просмотреть файл

@ -122,7 +122,7 @@ nsDirectoryService::Undefine(const char* aProp) {
}
NS_IMETHODIMP
nsDirectoryService::GetKeys(uint32_t* aCount, char*** aKeys) {
nsDirectoryService::GetKeys(nsTArray<nsCString>& aKeys) {
return NS_ERROR_NOT_IMPLEMENTED;
}