The array is only used in header_mode(), so it should be local to
the function. Also, it's confusing to let the last element play the
role of the invalid header mode, and it's clearer to use ARRAY_SIZE()
instead of spelling out the index of the last element. Next, it's
unnecessary to write to the mp3header structure, so avoid this and
mark the pointer argument const. Finally, the patch makes the array
constant, not only the mode strings.
};
static const int frame_size_index[] = {24000, 72000, 72000};
-static const char *mode_text[] = {"stereo", "joint stereo", "dual channel", "mono", "invalid"};
-
#ifdef HAVE_ID3TAG
#include <id3tag.h>
return frequencies[h->version][h->freq];
}
-static const char *header_mode(struct mp3header *h)
+static const char *header_mode(const struct mp3header *h)
{
- if (h->mode > 4)
- h->mode = 4; /* invalid */
+ const char * const mode_text[] = {"stereo", "joint stereo",
+ "dual channel", "mono"};
+
+ if (h->mode >= ARRAY_SIZE(mode_text))
+ return "invalid";
return mode_text[h->mode];
}