Use allocated buffer instead of trying to allocate dynamic array on stack.

This commit is contained in:
waterson%netscape.com 1999-07-14 19:41:05 +00:00
Родитель d178ccc1b4
Коммит 7e3d90b60c
1 изменённых файлов: 12 добавлений и 3 удалений

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

@ -1,4 +1,4 @@
/* -*- Mode: C++ tab-width: 2 indent-tabs-mode: nil c-basic-offset: 2 -*- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* *
* The contents of this file are subject to the Netscape Public License * The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL") you may not use this file except in * Version 1.0 (the "NPL") you may not use this file except in
@ -1513,7 +1513,9 @@ NS_IMETHODIMP nsTextEditor::OutputToString(nsString& aOutputString,
else else
{ // default processing { // default processing
nsCOMPtr<nsITextEncoder> encoder; nsCOMPtr<nsITextEncoder> encoder;
char progid[strlen(NS_DOC_ENCODER_PROGID_BASE) + aFormatType.Length() + 1]; char* progid = new char[strlen(NS_DOC_ENCODER_PROGID_BASE) + aFormatType.Length() + 1];
if (! progid)
return NS_ERROR_OUT_OF_MEMORY;
strcpy(progid, NS_DOC_ENCODER_PROGID_BASE); strcpy(progid, NS_DOC_ENCODER_PROGID_BASE);
char* type = aFormatType.ToNewCString(); char* type = aFormatType.ToNewCString();
strcat(progid, type); strcat(progid, type);
@ -1522,6 +1524,8 @@ NS_IMETHODIMP nsTextEditor::OutputToString(nsString& aOutputString,
nsnull, nsnull,
nsIDocumentEncoder::GetIID(), nsIDocumentEncoder::GetIID(),
getter_AddRefs(encoder)); getter_AddRefs(encoder));
delete[] progid;
if (NS_FAILED(rv)) if (NS_FAILED(rv))
{ {
printf("Couldn't get progid %s\n", progid); printf("Couldn't get progid %s\n", progid);
@ -1583,7 +1587,10 @@ NS_IMETHODIMP nsTextEditor::OutputToStream(nsIOutputStream* aOutputStream,
{ {
nsresult rv; nsresult rv;
nsCOMPtr<nsITextEncoder> encoder; nsCOMPtr<nsITextEncoder> encoder;
char progid[strlen(NS_DOC_ENCODER_PROGID_BASE) + aFormatType.Length() + 1]; char* progid = new char[strlen(NS_DOC_ENCODER_PROGID_BASE) + aFormatType.Length() + 1];
if (! progid)
return NS_ERROR_OUT_OF_MEMORY;
strcpy(progid, NS_DOC_ENCODER_PROGID_BASE); strcpy(progid, NS_DOC_ENCODER_PROGID_BASE);
char* type = aFormatType.ToNewCString(); char* type = aFormatType.ToNewCString();
strcat(progid, type); strcat(progid, type);
@ -1592,6 +1599,8 @@ NS_IMETHODIMP nsTextEditor::OutputToStream(nsIOutputStream* aOutputStream,
nsnull, nsnull,
nsIDocumentEncoder::GetIID(), nsIDocumentEncoder::GetIID(),
getter_AddRefs(encoder)); getter_AddRefs(encoder));
delete[] progid;
if (NS_FAILED(rv)) if (NS_FAILED(rv))
{ {
printf("Couldn't get progid %s\n", progid); printf("Couldn't get progid %s\n", progid);