Bug 1503577 - Change CreateDataFromPrimitive aDataLen to out parameter with size of string in bytes. r=mstange

Right now CreateDataFromPrimitive doesn't use the aDataLen parameter, and after this change the out
value should be the same as the value passed in, as long as we are dealing with strings.

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

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Tom Schuster 2018-11-09 13:24:28 +00:00
Родитель 7b787afdfe
Коммит 3a8e0049b7
6 изменённых файлов: 19 добавлений и 14 удалений

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

@ -570,13 +570,14 @@ nsClipboard::SelectionGetEvent(GtkClipboard *aClipboard,
}
void *primitive_data = nullptr;
uint32_t dataLen = 0;
nsPrimitiveHelpers::CreateDataFromPrimitive(nsDependentCString(target_name),
item, &primitive_data, len);
item, &primitive_data, &dataLen);
if (primitive_data) {
gtk_selection_data_set(aSelectionData, selectionTarget,
8, /* 8 bits in a unit */
(const guchar *)primitive_data, len);
(const guchar *)primitive_data, dataLen);
free(primitive_data);
}

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

@ -1675,14 +1675,12 @@ nsDragService::SourceDataGet(GtkWidget *aWidget,
} else {
actualFlavor = mimeFlavor.get();
}
uint32_t tmpDataLen = 0;
void *tmpData = nullptr;
nsresult rv;
nsCOMPtr<nsISupports> data;
uint32_t len;
rv = item->GetTransferData(actualFlavor,
getter_AddRefs(data),
&tmpDataLen);
&len);
if (strcmp(actualFlavor, kFilePromiseMime) == 0) {
if (NS_SUCCEEDED(rv)) {
@ -1694,8 +1692,10 @@ nsDragService::SourceDataGet(GtkWidget *aWidget,
}
if (NS_SUCCEEDED(rv)) {
void *tmpData = nullptr;
uint32_t tmpDataLen = 0;
nsPrimitiveHelpers::CreateDataFromPrimitive(
nsDependentCString(actualFlavor), data, &tmpData, tmpDataLen);
nsDependentCString(actualFlavor), data, &tmpData, &tmpDataLen);
// if required, do the extra work to convert unicode to plain
// text and replace the output values with the plain text.
if (needToDoConversionToPlainText) {

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

@ -125,13 +125,14 @@ nsPrimitiveHelpers :: CreatePrimitiveForCFHTML ( const void* aDataBuff,
// parameter does not reflect that.
//
void
nsPrimitiveHelpers :: CreateDataFromPrimitive ( const nsACString& aFlavor, nsISupports* aPrimitive,
void** aDataBuff, uint32_t aDataLen )
nsPrimitiveHelpers::CreateDataFromPrimitive(const nsACString& aFlavor, nsISupports* aPrimitive,
void** aDataBuff, uint32_t* aDataLen)
{
if ( !aDataBuff )
return;
*aDataBuff = nullptr;
*aDataLen = 0;
if (aFlavor.EqualsLiteral(kTextMime) ||
aFlavor.EqualsLiteral(kCustomTypesMime)) {
@ -140,6 +141,7 @@ nsPrimitiveHelpers :: CreateDataFromPrimitive ( const nsACString& aFlavor, nsISu
nsAutoCString data;
plainText->GetData ( data );
*aDataBuff = ToNewCString(data);
*aDataLen = data.Length() * sizeof(char);
}
}
else {
@ -148,6 +150,7 @@ nsPrimitiveHelpers :: CreateDataFromPrimitive ( const nsACString& aFlavor, nsISu
nsAutoString data;
doubleByteText->GetData ( data );
*aDataBuff = ToNewUnicode(data);
*aDataLen = data.Length() * sizeof(char16_t);
}
}

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

@ -31,8 +31,8 @@ public:
// Given a nsISupports* primitive and the flavor it represents, creates a new data
// buffer with the data in it. This data will be null terminated, but the length
// parameter does not reflect that.
static void CreateDataFromPrimitive ( const nsACString& aFlavor, nsISupports* aPrimitive,
void** aDataBuff, uint32_t aDataLen ) ;
static void CreateDataFromPrimitive(const nsACString& aFlavor, nsISupports* aPrimitive,
void** aDataBuff, uint32_t* aDataLen);
}; // class nsPrimitiveHelpers

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

@ -126,9 +126,10 @@ DataStruct::WriteCache(nsISupports* aData, uint32_t aDataLen)
// write out the contents of the clipboard to the file
void* buff = nullptr;
nsPrimitiveHelpers::CreateDataFromPrimitive(mFlavor, aData, &buff, aDataLen);
uint32_t dataLen = 0;
nsPrimitiveHelpers::CreateDataFromPrimitive(mFlavor, aData, &buff, &dataLen);
if (buff) {
int32_t written = PR_Write(mCacheFD, buff, aDataLen);
int32_t written = PR_Write(mCacheFD, buff, dataLen);
free(buff);
if (written) {
return NS_OK;

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

@ -1339,7 +1339,7 @@ HRESULT nsDataObj::GetText(const nsACString & aDataFlavor, FORMATETC& aFE, STGME
if ( !len )
return E_FAIL;
nsPrimitiveHelpers::CreateDataFromPrimitive(
nsDependentCString(flavorStr), genericDataWrapper, &data, len);
nsDependentCString(flavorStr), genericDataWrapper, &data, &len);
if ( !data )
return E_FAIL;