On Sun, Aug 20, 2017 at 6:35 PM, Nicholas Nethercote <n.netherc...@gmail.com > wrote:
> Hi, > > For a long time we have had types nsAutoString and nsAutoCString which are > strings with 64 chars of inline storage. They are good for holding short > strings, most often on the stack, because they avoid the need to heap > allocate > a char buffer. > > I recently landed patches (bug 1386103) that introduce nsAutoStringN and > nsAutoCStringN. These are like the existing types but their length is a > template parameter. So if you want an nsString with 128 chars of inline > storage, you'd use nsAutoStringN<128>. If you want an nsCString with enough > inline storage to store an nsID you'd use nsAutoCStringN<NSID_LENGTH>. > > nsAutoString and nsAutoCString have been redefined as typedefs for > nsAutoStringN<64> and nsAutoCStringN<64>, respectively. > First, let me say this is a great addition. Thanks! I do have a question, though. My impression was that something like nsAutoCString stored its data in a null terminated string. So you can do things like: nsAutoCString someValue; printf_stderr("value = %s\n", someValue.get()); Does nAutoCStringN also store its value null-terminated? Is that null somehow accounted for in the storage? I don't see where that is done: http://searchfox.org/mozilla-central/source/xpcom/string/nsTString.h#664 Should that be `mStorage[N + 1]`? Thanks. Ben _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform