Skip to content

Commit 2879121

Browse files
psemiletovfalkTX
authored andcommitted
modern Hydrogen drumkit format parsing fix
1 parent 0c2c794 commit 2879121

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

drmr_hydrogen.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ struct hp_info {
9090
char in_instrument_list;
9191
char in_instrument;
9292
char in_layer;
93+
char in_drumkit_component;
94+
9395
char counted_cur_inst;
9496
int cur_off;
9597
char cur_buf[MAX_CHAR_DATA];
@@ -106,7 +108,7 @@ startElement(void *userData, const char *name, const char **atts)
106108
info->cur_off = 0;
107109
if (info->in_info) {
108110
if (info->in_instrument) {
109-
if (!strcmp(name,"layer") && !info->scan_only) {
111+
if (!strcmp(name,"layer") && !info->scan_only) {
110112
info->in_layer = 1;
111113
info->cur_layer = malloc(sizeof(struct instrument_layer));
112114
memset(info->cur_layer,0,sizeof(struct instrument_layer));
@@ -121,6 +123,10 @@ startElement(void *userData, const char *name, const char **atts)
121123
} else {
122124
if (!strcmp(name,"instrumentList"))
123125
info->in_instrument_list = 1;
126+
127+
if (! strcmp (name,"drumkitComponent"))
128+
info->in_drumkit_component = 1;
129+
124130
}
125131
} else {
126132
if (!strcmp(name,"drumkit_info"))
@@ -135,7 +141,7 @@ endElement(void *userData, const char *name)
135141
if (info->cur_off == MAX_CHAR_DATA) info->cur_off--;
136142
info->cur_buf[info->cur_off]='\0';
137143

138-
if (info->in_info && !info->in_instrument_list && !strcmp(name,"name"))
144+
if (info->in_info && ! info->in_drumkit_component && !info->in_instrument_list && !strcmp(name,"name"))
139145
info->kit_info->name = strdup(info->cur_buf);
140146
if (info->scan_only && info->in_info && !info->in_instrument_list && !strcmp(name,"info"))
141147
info->kit_info->desc = strdup(info->cur_buf);
@@ -188,6 +194,9 @@ endElement(void *userData, const char *name)
188194
info->in_instrument = 0;
189195
}
190196
if (info->in_instrument_list && !strcmp(name,"instrumentList")) info->in_instrument_list = 0;
197+
if (info->in_drumkit_component && ! strcmp (name, "drumkitComponent"))
198+
info->in_drumkit_component = 0;
199+
191200
if (info->in_info && !strcmp(name,"drumkit_info")) info->in_info = 0;
192201
}
193202

0 commit comments

Comments
 (0)