|
@@ -700,26 +700,21 @@ int snd_info_get_line(struct snd_info_buffer *buffer, char *line, int len)
|
|
|
{
|
|
|
int c = -1;
|
|
|
|
|
|
+ if (snd_BUG_ON(!buffer || !buffer->buffer))
|
|
|
+ return 1;
|
|
|
if (len <= 0 || buffer->stop || buffer->error)
|
|
|
return 1;
|
|
|
- while (--len > 0) {
|
|
|
+ while (!buffer->stop) {
|
|
|
c = buffer->buffer[buffer->curr++];
|
|
|
- if (c == '\n') {
|
|
|
- if (buffer->curr >= buffer->size)
|
|
|
- buffer->stop = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- *line++ = c;
|
|
|
- if (buffer->curr >= buffer->size) {
|
|
|
+ if (buffer->curr >= buffer->size)
|
|
|
buffer->stop = 1;
|
|
|
+ if (c == '\n')
|
|
|
break;
|
|
|
+ if (len) {
|
|
|
+ len--;
|
|
|
+ *line++ = c;
|
|
|
}
|
|
|
}
|
|
|
- while (c != '\n' && !buffer->stop) {
|
|
|
- c = buffer->buffer[buffer->curr++];
|
|
|
- if (buffer->curr >= buffer->size)
|
|
|
- buffer->stop = 1;
|
|
|
- }
|
|
|
*line = '\0';
|
|
|
return 0;
|
|
|
}
|