You probably never noticed because IDs always have a valid counter from Office-generated documents (you never get 'rId', always 'rId1', even when there is no 'rId2'). However, if you generate a document with an ID that doesn't contain an index, then libOPC
generates invalid IDs.
For example, I have a part that contains a reference with ID 'cover'. opc_dump does this:
Source |Id |Destination |Type
I submitted a patch that solves this problem in opc_generate, but later noticed that the problem is more widespread. Also, that patch uses an internal constant, and I'm guessing you don't want that.