Closed Bug 323471 Opened 19 years ago Closed 19 years ago

Remove nsTString::ToCString

Categories

(Core :: XPCOM, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: bryner, Assigned: bryner)

References

Details

Attachments

(1 file, 1 obsolete file)

This method generally has better alternatives available, and we should remove it instead of propagating it to nsTSubstring for bug 323470.
Attached patch patch (obsolete) — Splinter Review
In order to cover some of the use cases for ToCString, I added versions of Lossy[Convert|Append]UTF16toASCII that write into a raw char buffer. The caller must pass in the length of the buffer, and the method fails if the buffer turns out not to be large enough.
Attachment #208522 - Flags: superreview?(darin)
Attachment #208522 - Flags: review?(darin)
Comment on attachment 208522 [details] [diff] [review] patch >Index: widget/src/mac/nsMenuX.cpp >+ short inKey = NS_LossyConvertUTF16toASCII(keyEquivalent).get()[0]; You could also use .First() >Index: xpcom/string/public/nsReadableUtils.h >+// These methods copy or append into the raw buffer |aDest|. >+// |aDestSize| should be the size of the buffer. You should mention that aDest will be null terminated upon return, and that aDestSize must be > 0 to include room for the terminating null byte. >+// Returns PR_TRUE on successful copy, or PR_FALSE if the buffer is too small. >+NS_COM PRBool LossyCopyUTF16toASCII( const nsAString& aSource, char* aDest, PRUint32 aDestSize ); >+// aDest must be null-terminated when calling LossyAppendUTF16toASCII >+NS_COM PRBool LossyAppendUTF16toASCII( const nsAString& aSource, char* aDest, PRUint32 aDestSize, PRUint32 aDestLength = PRUint32(-1) ); It just occured to me that nsTFixedString could perhaps be used instead... char *writableBuf; PRUint32 writableBufSize; nsFixedCString str(writableBuf, writableBufSize); LossyCopyUTF16toASCII(utf16str, str); if (str.get() != writableBuf) { // copy required more than writableBufSize bytes ... } But the new function signatures are easier to use for consumers. However, it would be nice if there were UTF16 -> UTF8 versions (and the rest of the permutations for consistency). >Index: xpcom/string/src/nsReadableUtils.cpp >+ // right now, this won't work on multi-fragment destinations >+ LossyConvertEncoding<PRUnichar, char> converter(aDest + aDestLength); I'm confused by this comment. The destination (aDest) is never going to be multi-fragment, right? Since this is a string API addition, I'd like dbaron to approve it as well.
Attachment #208522 - Flags: review?(dbaron)
(In reply to comment #2) > But the new function signatures are easier to use for consumers. However, > it would be nice if there were UTF16 -> UTF8 versions (and the rest of > the permutations for consistency). Yikes. This is turning into a lot of work for history import. > >Index: xpcom/string/src/nsReadableUtils.cpp > > >+ // right now, this won't work on multi-fragment destinations > >+ LossyConvertEncoding<PRUnichar, char> converter(aDest + aDestLength); > > I'm confused by this comment. The destination (aDest) is never going to be > multi-fragment, right? The comment was copy and pasted, I don't know what it means either.
(In reply to comment #2) > It just occured to me that nsTFixedString could perhaps be used instead... I would actually rather do this for the places where we need this functionality, than implement all of the permutations in nsReadableUtils that would go largely unused. I'll post a version of the patch that does that.
Attached patch like thisSplinter Review
Attachment #208522 - Attachment is obsolete: true
Attachment #208610 - Flags: superreview?(darin)
Attachment #208610 - Flags: review?(darin)
Attachment #208522 - Flags: superreview?(darin)
Attachment #208522 - Flags: review?(dbaron)
Attachment #208522 - Flags: review?(darin)
Comment on attachment 208610 [details] [diff] [review] like this looks great! r+sr=darin
Attachment #208610 - Flags: superreview?(darin)
Attachment #208610 - Flags: superreview+
Attachment #208610 - Flags: review?(darin)
Attachment #208610 - Flags: review+
checked in.
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
This checking seems to have caused the following on my Win32 cygwin MinGW system e:/mozilla/source/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp:123 0: error: call of overloaded `NS_LossyConvertUTF16toASCII(Value&)' is ambiguous ../../../../dist/include/string/nsString.h:108: note: candidates are: NS_LossyCo nvertUTF16toASCII::NS_LossyConvertUTF16toASCII(char) ../../../../dist/include/string/nsString.h:91: note: NS_LossyCon vertUTF16toASCII::NS_LossyConvertUTF16toASCII(const PRUnichar*) make[7]: *** [nsXULTemplateBuilder.o] Error 1
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
(In reply to comment #8) > This checking seems to have caused the following on my Win32 cygwin MinGW > system And on the Firefox balsa tinderbox: http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1138141200.29582.gz
(In reply to comment #9) > (In reply to comment #8) > > This checking seems to have caused the following on my Win32 cygwin MinGW > > system > > And on the Firefox balsa tinderbox: > http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1138141200.29582.gz And when trying to build Camino on Mac OS X. cl
I checked in a fix for the balsa bustage. I think the problem there was that Value is not a nsString, and unfortunately the code was inside a PR_LOGGING block that perhaps isn't compiled in many configurations ;-) Marking FIXED again.
Status: REOPENED → RESOLVED
Closed: 19 years ago19 years ago
Resolution: --- → FIXED
Component: String → XPCOM
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: