Wenn ich das richtig sehe, hast Du einen Strukturtyp
unter dem Namen
struct metadata
definiert und dann noch den Typ
MetaData
als Zeiger auf diesen Strukturtyp.
In Main.c definierst Du nun
MetaData m1 = (MetaData)malloc(sizeof(MetaData));
Wahrscheinlich wolltest Du hier einen Pointer m1 definieren,
der auf einen Speicherbereich zeigt, in dem sich
eine "metadata"-Struktur breitgemachen kann.
Das Problem dabei ist, dass sizeof(MetaData) hier nur
die Größe eines einzelnen Pointers wiedergibt, d. h. je nach
Betriebssystem 4 oder 8 byte. Was Du wolltest, ist
wahrscheinlich sizeof(metadata)?
Deine Struktur besteht ja aus zwei Pointern, daher
kann es sein, dass Dein Programm beim ersten
Funktions-Aufruf (d. h. Zugriff auf den ersten Pointer)
"zufällig" noch funktioniert und erst beim Setzen
des zweiten Pointers, der dann außerhalb des allozierten
Bereichs liegt, aussteigt.
Abgesehen davon würde ich versuchen, den Code etwas
zu entrümpeln. Es macht IMHO keinen Sinn, den
Funktionen setMetaDataBezeichnung(...) als Argument
einen Typ Pointer-auf-Pointer-auf-Struktur zu übergeben,
Pointer-auf-Struktur sollte völlig ausreichend sein.
MfG
Andreas