Hi, In a recent change[1], the Buffer._charsWritten expected from following code is changed from 6 to 4, this make me wonder what is the definition and proper value for Buffer._charsWritten.
buf = new Buffer(9); buf.write('123456', 'base64'); assert.equal(Buffer._charsWritten, 4); buf.write('00010203040506070809', 'hex'); assert.equal(Buffer._charsWritten, 18); According to the doc, "The number of characters written (which may be different than the number of bytes written) is set in Buffer._charsWrittenand will be overwritten the next time buf.write() is called." My understanding to "The number of characters written" is the number of characters used in the input stream to be decoded into the buffer, and in this case, 6 seems to be reasonable as used to decode 4 octets. Theoretically, the proper base64 encoded input should have multiple of 4 characters, in this case, 2 paddings is probably needed. If we consider multiple of 4 to be "non partial character", then the decoded octets would be 3 instead of 4. But in this case, Buffer.write do return 4 and write 4 octets into the buffer. So, is this a bug or there is a better explanation? Perhaps my understanding is just wrong. Would you please shed the light on what should be expected here? Cheers, Henry [1] https://github.com/joyent/node/commit/f101f7c9babb31f077c78b52de7cc45ad687f57e#test/simple/test-buffer.js