Problem with response to +CMGL

Possible symptoms:
+CMGL command returns a list of one or more messages with invalid index (usually -1)
+CMS ERROR: 500 response to +CMGL
+CMS ERROR: 320 response to +CMGL

Known issue:
Sprint voicemail indications sent to the modem will cause an index corruption in the received SMS storage area. This appears to make the +CMGL command behave in an unpredictable manor.

Workaround:
Delete the corrupted message. This can be accomplished by deleting all messages (+CMGD=1,4). However, if you are concerned about deleting valid messages you can use +CMGR to cycle through memory locations to determine which message to delete:
Reading corrupted index returns +CMS ERROR: 500
Reading an empty index returns ERROR
Reading an index with real message returns a +CMGR: response with valid message data

Once all corrupted messages are deleted +CMGL will behave as expected.