I have implemented a GDB pretty-printer in Python for my custom type. It does print the values as I expect but it doesn't indent the substructures "correctly" when set print pretty is in effect.
E.g. given
typedef Type struct {
    int child1;
    struct {
      int grandchild1;
    } grand;
}
GDB itself, without my pretty-printer, displays this as
$4 = {
    child1 = 42,
    grand = {
        grandchild1 = 1
    }
}
However, with my pretty-printer it displays as
$5 = {
    child1 = 42,
    grand = {
    grandchild1 = 1
}
}
Forgetting to indent the data for the sub structure 'grand'.
My pretty-printer basically does this:
def __init__(self, val):
    self.val = val
def to_string(self):
    return None
def children(self):
    for field in self.val.type.fields():
       yeild field.name, str(self.val[field.name])
as described here: Make debugging easier with custom pretty-printers.
How come this difference?
                        
Based on what you've said, it sounds like a plain old bug. A full reproducer would be nice, though.