If you think about this, it isn't a bug. If you enumerate the sections or keys, each object returned is terminated by a newline:
 Code:
V1\nV2\nV3\n
You are using LINE TERMINATORS as DELIMITERS and have 3 delimiters, thus you have FOUR fields.

To properly parse the values, you need to translate LINE TERMINATION to DELIMITERS by removing the last (excess) line terminator. That's precisely what EnumIni() does, along with some error handling.
 Code:
; Get an INI enumeration of keys
$Tmp = ReadProfileString(@ScriptDir + '\test.ini', 'Accounting Printers', '')
; If we got data, remove the last line terminator and split on the \n delimiters
If Trim($Tmp)
  $aData = Split(Left($Tmp, Len($Tmp) - 1), Chr(10))
EndIf
; Enumerate the array of section keys and get the values
For Each $Key In $aData
  'Key: ' $Key ?
  'Val: ' ReadProfileString(@ScriptDir + '\test.ini', 'Accounting Printers', $Key) ?
Next
Quit 0
This outputs exactly what you would expect:
 Code:
Key: printer1
Val: Ricoh
Key: printer2
Val: Sharp
Key: printer3
Val: Brother
Key: printer4
Val: Xerox


If you don't remove the last line terminator, you have an extra delimiter, the last field after that is empty, so you get an additional enumeration string.

Basic coding - understand your data structure before you use it!

Glenn
_________________________
Actually I am a Rocket Scientist! \:D