* grub-core/gettext/gettext.c (grub_gettext_pread): Fix the case when
len = 0. (grub_gettext_translate_real): Handle 0th string. (grub_gettext_translate): Ensure that "" isn't translated.
This commit is contained in:
parent
505e41dc36
commit
d61357cec2
2 changed files with 41 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2012-04-04 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/gettext/gettext.c (grub_gettext_pread): Fix the case when
|
||||||
|
len = 0.
|
||||||
|
(grub_gettext_translate_real): Handle 0th string.
|
||||||
|
(grub_gettext_translate): Ensure that "" isn't translated.
|
||||||
|
|
||||||
2012-04-04 Vladimir Serbinenko <phcoder@gmail.com>
|
2012-04-04 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* grub-core/disk/diskfilter.c (grub_diskfilter_memberlist): Add
|
* grub-core/disk/diskfilter.c (grub_diskfilter_memberlist): Add
|
||||||
|
|
|
@ -75,6 +75,8 @@ static grub_err_t
|
||||||
grub_gettext_pread (grub_file_t file, void *buf, grub_size_t len,
|
grub_gettext_pread (grub_file_t file, void *buf, grub_size_t len,
|
||||||
grub_off_t offset)
|
grub_off_t offset)
|
||||||
{
|
{
|
||||||
|
if (len == 0)
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
if (grub_file_seek (file, offset) == (grub_off_t) - 1)
|
if (grub_file_seek (file, offset) == (grub_off_t) - 1)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
if (grub_file_read (file, buf, len) != (grub_ssize_t) len)
|
if (grub_file_read (file, buf, len) != (grub_ssize_t) len)
|
||||||
|
@ -208,6 +210,35 @@ grub_gettext_translate_real (struct grub_gettext_context *ctx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (current == 0 && ctx->grub_gettext_max != 0)
|
||||||
|
{
|
||||||
|
current_string = grub_gettext_getstring_from_position (ctx, 0);
|
||||||
|
|
||||||
|
if (!current_string)
|
||||||
|
{
|
||||||
|
grub_errno = GRUB_ERR_NONE;
|
||||||
|
grub_error_pop ();
|
||||||
|
depth--;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (grub_strcmp (current_string, orig) == 0)
|
||||||
|
{
|
||||||
|
const char *ret = 0;
|
||||||
|
ret = grub_gettext_gettranslation_from_position (ctx, current);
|
||||||
|
if (!ret)
|
||||||
|
{
|
||||||
|
grub_errno = GRUB_ERR_NONE;
|
||||||
|
grub_error_pop ();
|
||||||
|
depth--;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
grub_error_pop ();
|
||||||
|
depth--;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
grub_error_pop ();
|
grub_error_pop ();
|
||||||
depth--;
|
depth--;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -217,6 +248,9 @@ static const char *
|
||||||
grub_gettext_translate (const char *orig)
|
grub_gettext_translate (const char *orig)
|
||||||
{
|
{
|
||||||
const char *ret;
|
const char *ret;
|
||||||
|
if (orig[0] == 0)
|
||||||
|
return orig;
|
||||||
|
|
||||||
ret = grub_gettext_translate_real (&main_context, orig);
|
ret = grub_gettext_translate_real (&main_context, orig);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue