@@ -234,6 +234,24 @@ - (void)buildTrackListForCtx:(int)ctx forPlaylist:(ddb_playlist_t *)plt {
234234 }.mutableCopy];
235235}
236236
237+ static char *
238+ _formatted_title_for_unknown_key (const char *key) {
239+ size_t l = strlen (key);
240+ char *title = malloc (l*4 );
241+ title[0 ] = ' <' ;
242+ char *t = title + 1 ;
243+ const char *p = key;
244+ while (*p) {
245+ int32_t size = 0 ;
246+ u8_nextchar (p, &size);
247+ int outsize = u8_toupper ((const signed char *)p, size, t);
248+ t += outsize;
249+ p += size;
250+ }
251+ *t++ = ' >' ;
252+ *t++ = 0 ;
253+ return title;
254+ }
237255
238256- (void )fillMeta {
239257 [self .store removeAllObjects ];
@@ -261,10 +279,10 @@ - (void)fillMeta {
261279 continue ;
262280 }
263281
264- size_t l = strlen (keys[k]);
265- char title[l + 3 ];
266- snprintf (title, sizeof (title), " <%s >" , keys[k]);
282+ char *title = _formatted_title_for_unknown_key (keys[k]);
267283 add_field (self.store , keys[k], title, 0 , self.tracks , self.numtracks );
284+ free (title);
285+ title = NULL ;
268286 }
269287 if (keys) {
270288 free (keys);
@@ -296,10 +314,10 @@ - (void)fillMetadata {
296314 if (trkproperties_hc_props[i]) {
297315 continue ;
298316 }
299- size_t l = strlen (keys[k]) + 2 ;
300- char title[l];
301- snprintf (title, sizeof (title), " <%s >" , keys[k]+1 );
317+ char *title = _formatted_title_for_unknown_key (keys[k]);
302318 add_field (self.propstore , keys[k], title, 1 , self.tracks , self.numtracks );
319+ free (title);
320+ title = NULL ;
303321 }
304322 if (keys) {
305323 free (keys);
@@ -963,8 +981,10 @@ - (IBAction)addNewField:(id)sender {
963981 }
964982 }
965983
966- NSString *title = [NSString stringWithFormat: @" <%@ >" , key];
967- add_field (self.store , key.UTF8String , title.UTF8String , 0 , self.tracks , self.numtracks );
984+ char *title = _formatted_title_for_unknown_key (key.UTF8String );
985+ add_field (self.store , key.UTF8String , title, 0 , self.tracks , self.numtracks );
986+ free (title);
987+ title = NULL ;
968988 self.modified = YES ;
969989 [self .metadataTableView reloadData ];
970990 }];
0 commit comments