diff --git a/widget/src/os2/nsDeviceContextSpecOS2.cpp b/widget/src/os2/nsDeviceContextSpecOS2.cpp index 24163d1773c0..7e80583d6868 100644 --- a/widget/src/os2/nsDeviceContextSpecOS2.cpp +++ b/widget/src/os2/nsDeviceContextSpecOS2.cpp @@ -524,14 +524,16 @@ nsresult GlobalPrinters::InitializeGlobalPrinters () for (int i = 0; i < mGlobalNumPrinters; i++) { nsXPIDLCString printer; nsDeviceContextSpecOS2::PrnDlg.GetPrinter(i, getter_Copies(printer)); - PRUnichar* printerName = new PRUnichar[strlen(printer)+1]; - MultiByteToWideChar(0, printer, strlen(printer)+1, printerName, strlen(printer)+1); - nsAutoString nativePrinterName(printerName); - delete [] printerName; - if ( defaultPrinter == i ) - mGlobalPrinterList->InsertStringAt(nativePrinterName, 0); - else - mGlobalPrinterList->AppendString(nativePrinterName); + + nsAutoChar16Buffer printerName; + PRInt32 printerNameLength; + nsresult rv = MultiByteToWideChar(0, printer, strlen(printer), + printerName, printerNameLength); + if (defaultPrinter == i) { + mGlobalPrinterList->InsertStringAt(nsDependentString(printerName.get()), 0); + } else { + mGlobalPrinterList->AppendString(nsDependentString(printerName.get())); + } } return NS_OK; } @@ -550,12 +552,12 @@ void GlobalPrinters::GetDefaultPrinterName(PRUnichar*& aDefaultPrinterName) int defaultPrinter = nsDeviceContextSpecOS2::PrnDlg.GetDefaultPrinter(); nsXPIDLCString printer; nsDeviceContextSpecOS2::PrnDlg.GetPrinter(defaultPrinter, getter_Copies(printer)); - PRUnichar* printerName = new PRUnichar[strlen(printer)+1]; - MultiByteToWideChar(0, printer, strlen(printer)+1, printerName, strlen(printer)+1); - nsAutoString nativePrinterName(printerName); - delete [] printerName; - aDefaultPrinterName = ToNewUnicode(nativePrinterName); + nsAutoChar16Buffer printerName; + PRInt32 printerNameLength; + MultiByteToWideChar(0, printer, strlen(printer), printerName, + printerNameLength); + aDefaultPrinterName = ToNewUnicode(nsDependentString(printerName.get())); GlobalPrinters::GetInstance()->FreeGlobalPrinters(); }