diff --git a/glibc-rh1052846.patch b/glibc-rh1052846.patch
index c88675a..cbc670e 100644
--- a/glibc-rh1052846.patch
+++ b/glibc-rh1052846.patch
@@ -14,404 +14,8 @@ Date: Mon Jan 6 14:37:21 2014 +0530
infinite loop.
The fix here is to detect the __codecvt_partial status in addition to
- checking if the buffer is full. I have also added a test case
- (written by Arjun Shankar) that demonstrates the infinite loop.
+ checking if the buffer is full.
-diff --git a/libio/Makefile b/libio/Makefile
-index 05432f4..38bdeb3 100644
---- a/libio/Makefile
-+++ b/libio/Makefile
-@@ -60,7 +60,7 @@ tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc \
- tst-wmemstream1 tst-wmemstream2 \
- bug-memstream1 bug-wmemstream1 \
- tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos tst-fseek \
-- tst-fwrite-error
-+ tst-fwrite-error tst-fseek-partial-wide
- ifeq (yes,$(build-shared))
- # Add test-fopenloc only if shared library is enabled since it depends on
- # shared localedata objects.
-diff --git a/libio/tst-fseek-partial-wide.c b/libio/tst-fseek-partial-wide.c
-new file mode 100644
-index 0000000..9a34443
---- /dev/null
-+++ b/libio/tst-fseek-partial-wide.c
-@@ -0,0 +1,376 @@
-+/* Verify that ftell does not go into an infinite loop when a conversion fails
-+ due to insufficient space in the buffer.
-+ Copyright (C) 2014 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ . */
-+
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+
-+/* Defined in test-skeleton.c. */
-+static int create_temp_file (const char *base, char **filename);
-+
-+const wchar_t *numbers[] = {
-+ L"ゼロ\n",
-+ L"いち\n",
-+ L"に\n",
-+ L"さん\n",
-+ L"よん\n",
-+ L"ご\n",
-+ L"ろく\n",
-+ L"なな\n",
-+ L"はち\n",
-+ L"きゅう\n",
-+ L"じゅう\n",
-+ L"じゅういち\n",
-+ L"じゅうに\n",
-+ L"じゅうさん\n",
-+ L"じゅうよん\n",
-+ L"じゅうご\n",
-+ L"じゅうろく\n",
-+ L"じゅうなな\n",
-+ L"じゅうはち\n",
-+ L"じゅうきゅう\n",
-+ L"にじゅう\n",
-+ L"にじゅういち\n",
-+ L"にじゅうに\n",
-+ L"にじゅうさん\n",
-+ L"にじゅうよん\n",
-+ L"にじゅうご\n",
-+ L"にじゅうろく\n",
-+ L"にじゅうなな\n",
-+ L"にじゅうはち\n",
-+ L"にじゅうきゅう\n",
-+ L"さんじゅう\n",
-+ L"さんじゅういち\n",
-+ L"さんじゅうに\n",
-+ L"さんじゅうさん\n",
-+ L"さんじゅうよん\n",
-+ L"さんじゅうご\n",
-+ L"さんじゅうろく\n",
-+ L"さんじゅうなな\n",
-+ L"さんじゅうはち\n",
-+ L"さんじゅうきゅう\n",
-+ L"よんじゅう\n",
-+ L"よんじゅういち\n",
-+ L"よんじゅうに\n",
-+ L"よんじゅうさん\n",
-+ L"よんじゅうよん\n",
-+ L"よんじゅうご\n",
-+ L"よんじゅうろく\n",
-+ L"よんじゅうなな\n",
-+ L"よんじゅうはち\n",
-+ L"よんじゅうきゅう\n",
-+ L"ごじゅう\n",
-+ L"ごじゅういち\n",
-+ L"ごじゅうに\n",
-+ L"ごじゅうさん\n",
-+ L"ごじゅうよん\n",
-+ L"ごじゅうご\n",
-+ L"ごじゅうろく\n",
-+ L"ごじゅうなな\n",
-+ L"ごじゅうはち\n",
-+ L"ごじゅうきゅう\n",
-+ L"ろくじゅう\n",
-+ L"ろくじゅういち\n",
-+ L"ろくじゅうに\n",
-+ L"ろくじゅうさん\n",
-+ L"ろくじゅうよん\n",
-+ L"ろくじゅうご\n",
-+ L"ろくじゅうろく\n",
-+ L"ろくじゅうなな\n",
-+ L"ろくじゅうはち\n",
-+ L"ろくじゅうきゅう\n",
-+ L"ななじゅう\n",
-+ L"ななじゅういち\n",
-+ L"ななじゅうに\n",
-+ L"ななじゅうさん\n",
-+ L"ななじゅうよん\n",
-+ L"ななじゅうご\n",
-+ L"ななじゅうろく\n",
-+ L"ななじゅうなな\n",
-+ L"ななじゅうはち\n",
-+ L"ななじゅうきゅう\n",
-+ L"はちじゅう\n",
-+ L"はちじゅういち\n",
-+ L"はちじゅうに\n",
-+ L"はちじゅうさん\n",
-+ L"はちじゅうよん\n",
-+ L"はちじゅうご\n",
-+ L"はちじゅうろく\n",
-+ L"はちじゅうなな\n",
-+ L"はちじゅうはち\n",
-+ L"はちじゅうきゅう\n",
-+ L"きゅうじゅう\n",
-+ L"きゅうじゅういち\n",
-+ L"きゅうじゅうに\n",
-+ L"きゅうじゅうさん\n",
-+ L"きゅうじゅうよん\n",
-+ L"きゅうじゅうご\n",
-+ L"きゅうじゅうろく\n",
-+ L"きゅうじゅうなな\n",
-+ L"きゅうじゅうはち\n",
-+ L"きゅうじゅうきゅう\n",
-+ L"ひゃく\n",
-+ L"ひゃくいち\n",
-+ L"ひゃくに\n",
-+ L"ひゃくさん\n",
-+ L"ひゃくよん\n",
-+ L"ひゃくご\n",
-+ L"ひゃくろく\n",
-+ L"ひゃくなな\n",
-+ L"ひゃくはち\n",
-+ L"ひゃくきゅう\n",
-+ L"ひゃくじゅう\n",
-+ L"ひゃくじゅういち\n",
-+ L"ひゃくじゅうに\n",
-+ L"ひゃくじゅうさん\n",
-+ L"ひゃくじゅうよん\n",
-+ L"ひゃくじゅうご\n",
-+ L"ひゃくじゅうろく\n",
-+ L"ひゃくじゅうなな\n",
-+ L"ひゃくじゅうはち\n",
-+ L"ひゃくじゅうきゅう\n",
-+ L"ひゃくにじゅう\n",
-+ L"ひゃくにじゅういち\n",
-+ L"ひゃくにじゅうに\n",
-+ L"ひゃくにじゅうさん\n",
-+ L"ひゃくにじゅうよん\n",
-+ L"ひゃくにじゅうご\n",
-+ L"ひゃくにじゅうろく\n",
-+ L"ひゃくにじゅうなな\n",
-+ L"ひゃくにじゅうはち\n",
-+ L"ひゃくにじゅうきゅう\n",
-+ L"ひゃくさんじゅう\n",
-+ L"ひゃくさんじゅういち\n",
-+ L"ひゃくさんじゅうに\n",
-+ L"ひゃくさんじゅうさん\n",
-+ L"ひゃくさんじゅうよん\n",
-+ L"ひゃくさんじゅうご\n",
-+ L"ひゃくさんじゅうろく\n",
-+ L"ひゃくさんじゅうなな\n",
-+ L"ひゃくさんじゅうはち\n",
-+ L"ひゃくさんじゅうきゅう\n",
-+ L"ひゃくよんじゅう\n",
-+ L"ひゃくよんじゅういち\n",
-+ L"ひゃくよんじゅうに\n",
-+ L"ひゃくよんじゅうさん\n",
-+ L"ひゃくよんじゅうよん\n",
-+ L"ひゃくよんじゅうご\n",
-+ L"ひゃくよんじゅうろく\n",
-+ L"ひゃくよんじゅうなな\n",
-+ L"ひゃくよんじゅうはち\n",
-+ L"ひゃくよんじゅうきゅう\n",
-+ L"ひゃくごじゅう\n",
-+ L"ひゃくごじゅういち\n",
-+ L"ひゃくごじゅうに\n",
-+ L"ひゃくごじゅうさん\n",
-+ L"ひゃくごじゅうよん\n",
-+ L"ひゃくごじゅうご\n",
-+ L"ひゃくごじゅうろく\n",
-+ L"ひゃくごじゅうなな\n",
-+ L"ひゃくごじゅうはち\n",
-+ L"ひゃくごじゅうきゅう\n",
-+ L"ひゃくろくじゅう\n",
-+ L"ひゃくろくじゅういち\n",
-+ L"ひゃくろくじゅうに\n",
-+ L"ひゃくろくじゅうさん\n",
-+ L"ひゃくろくじゅうよん\n",
-+ L"ひゃくろくじゅうご\n",
-+ L"ひゃくろくじゅうろく\n",
-+ L"ひゃくろくじゅうなな\n",
-+ L"ひゃくろくじゅうはち\n",
-+ L"ひゃくろくじゅうきゅう\n",
-+ L"ひゃくななじゅう\n",
-+ L"ひゃくななじゅういち\n",
-+ L"ひゃくななじゅうに\n",
-+ L"ひゃくななじゅうさん\n",
-+ L"ひゃくななじゅうよん\n",
-+ L"ひゃくななじゅうご\n",
-+ L"ひゃくななじゅうろく\n",
-+ L"ひゃくななじゅうなな\n",
-+ L"ひゃくななじゅうはち\n",
-+ L"ひゃくななじゅうきゅう\n",
-+ L"ひゃくはちじゅう\n",
-+ L"ひゃくはちじゅういち\n",
-+ L"ひゃくはちじゅうに\n",
-+ L"ひゃくはちじゅうさん\n",
-+ L"ひゃくはちじゅうよん\n",
-+ L"ひゃくはちじゅうご\n",
-+ L"ひゃくはちじゅうろく\n",
-+ L"ひゃくはちじゅうなな\n",
-+ L"ひゃくはちじゅうはち\n",
-+ L"ひゃくはちじゅうきゅう\n",
-+ L"ひゃくきゅうじゅう\n",
-+ L"ひゃくきゅうじゅういち\n",
-+ L"ひゃくきゅうじゅうに\n",
-+ L"ひゃくきゅうじゅうさん\n",
-+ L"ひゃくきゅうじゅうよん\n",
-+ L"ひゃくきゅうじゅうご\n",
-+ L"ひゃくきゅうじゅうろく\n",
-+ L"ひゃくきゅうじゅうなな\n",
-+ L"ひゃくきゅうじゅうはち\n",
-+ L"ひゃくきゅうじゅうきゅう\n",
-+ L"にひゃく\n",
-+ L"にひゃくいち\n",
-+ L"にひゃくに\n",
-+ L"にひゃくさん\n",
-+ L"にひゃくよん\n",
-+ L"にひゃくご\n",
-+ L"にひゃくろく\n",
-+ L"にひゃくなな\n",
-+ L"にひゃくはち\n",
-+ L"にひゃくきゅう\n",
-+ L"にひゃくじゅう\n",
-+ L"にひゃくじゅういち\n",
-+ L"にひゃくじゅうに\n",
-+ L"にひゃくじゅうさん\n",
-+ L"にひゃくじゅうよん\n",
-+ L"にひゃくじゅうご\n",
-+ L"にひゃくじゅうろく\n",
-+ L"にひゃくじゅうなな\n",
-+ L"にひゃくじゅうはち\n",
-+ L"にひゃくじゅうきゅう\n",
-+ L"にひゃくにじゅう\n",
-+ L"にひゃくにじゅういち\n",
-+ L"にひゃくにじゅうに\n",
-+ L"にひゃくにじゅうさん\n",
-+ L"にひゃくにじゅうよん\n",
-+ L"にひゃくにじゅうご\n",
-+ L"にひゃくにじゅうろく\n",
-+ L"にひゃくにじゅうなな\n",
-+ L"にひゃくにじゅうはち\n",
-+ L"にひゃくにじゅうきゅう\n",
-+ L"にひゃくさんじゅう\n",
-+ L"にひゃくさんじゅういち\n",
-+ L"にひゃくさんじゅうに\n",
-+ L"にひゃくさんじゅうさん\n",
-+ L"にひゃくさんじゅうよん\n",
-+ L"にひゃくさんじゅうご\n",
-+ L"にひゃくさんじゅうろく\n",
-+ L"にひゃくさんじゅうなな\n",
-+ L"にひゃくさんじゅうはち\n",
-+ L"にひゃくさんじゅうきゅう\n",
-+ L"にひゃくよんじゅう\n",
-+ L"にひゃくよんじゅういち\n",
-+ L"にひゃくよんじゅうに\n",
-+ L"にひゃくよんじゅうさん\n",
-+ L"にひゃくよんじゅうよん\n",
-+ L"にひゃくよんじゅうご\n",
-+ L"にひゃくよんじゅうろく\n",
-+ L"にひゃくよんじゅうなな\n",
-+ L"にひゃくよんじゅうはち\n",
-+ L"にひゃくよんじゅうきゅう\n",
-+ L"にひゃくごじゅう\n",
-+ L"にひゃくごじゅういち\n",
-+ L"にひゃくごじゅうに\n",
-+ L"にひゃくごじゅうさん\n",
-+ L"にひゃくごじゅうよん\n",
-+ L"にひゃくごじゅうご\n",
-+ L"にひゃくごじゅうろく\n",
-+ L"にひゃくごじゅうなな\n",
-+ L"にひゃくごじゅうはち\n",
-+ L"にひゃくごじゅうきゅう\n",
-+ L"にひゃくろくじゅう\n",
-+ L"にひゃくろくじゅういち\n",
-+ L"にひゃくろくじゅうに\n",
-+ L"にひゃくろくじゅうさん\n",
-+ L"にひゃくろくじゅうよん\n",
-+ L"にひゃくろくじゅうご\n",
-+ L"にひゃくろくじゅうろく\n",
-+ L"にひゃくろくじゅうなな\n",
-+ L"にひゃくろくじゅうはち\n",
-+ L"にひゃくろくじゅうきゅう\n",
-+ L"にひゃくななじゅう\n",
-+ L"にひゃくななじゅういち\n",
-+ L"にひゃくななじゅうに\n",
-+ L"にひゃくななじゅうさん\n",
-+ L"にひゃくななじゅうよん\n",
-+ L"にひゃくななじゅうご\n",
-+ L"にひゃくななじゅうろく\n",
-+ L"にひゃくななじゅうなな\n",
-+ L"にひゃくななじゅうはち\n",
-+ L"にひゃくななじゅうきゅう\n",
-+ L"にひゃくはちじゅう\n",
-+ L"にひゃくはちじゅういち\n",
-+ L"にひゃくはちじゅうに\n",
-+ L"にひゃくはちじゅうさん\n",
-+ L"にひゃくはちじゅうよん\n",
-+ L"にひゃくはちじゅうご\n",
-+ L"にひゃくはちじゅうろく\n",
-+ L"にひゃくはちじゅうなな\n",
-+ L"にひゃくはちじゅうはち\n",
-+ L"にひゃくはちじゅうきゅう\n",
-+ L"にひゃくきゅうじゅう\n",
-+ L"にひゃくきゅうじゅういち\n",
-+ L"にひゃくきゅうじゅうに\n",
-+ L"にひゃくきゅうじゅうさん\n",
-+ L"にひゃくきゅうじゅうよん\n",
-+ L"にひゃくきゅうじゅうご\n",
-+ L"にひゃくきゅうじゅうろく\n",
-+ L"にひゃくきゅうじゅうなな\n",
-+ L"にひゃくきゅうじゅうはち\n",
-+ L"にひゃくきゅうじゅうきゅう\n",
-+ L"さんびゃく\n",
-+};
-+
-+
-+int
-+do_test (void)
-+{
-+ int i;
-+
-+ if (setlocale (LC_ALL, "en_US.UTF-8") == NULL)
-+ {
-+ printf ("Cannot set en_US.UTF-8 locale.\n");
-+ exit (1);
-+ }
-+
-+ char *filename;
-+ int fd = create_temp_file ("tst-fseek-wide-partial.out", &filename);
-+
-+ if (fd == -1)
-+ return 1;
-+
-+ FILE *fp = fdopen (fd, "w+");
-+ if (fp == NULL)
-+ {
-+ printf ("fopen: %s\n", strerror (errno));
-+ close (fd);
-+ return 1;
-+ }
-+
-+ for (i = 0; i < sizeof (numbers) / sizeof (char *); i++)
-+ {
-+ printf ("offset: %ld\n", ftell (fp));
-+ if (fputws (numbers[i], fp) == -1)
-+ {
-+ perror ("fputws");
-+ return 1;
-+ }
-+ }
-+ fclose (fp);
-+ return 0;
-+}
-+
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
diff --git a/libio/wfileops.c b/libio/wfileops.c
index 87d3cdc..877fc1f 100644
--- a/libio/wfileops.c
diff --git a/glibc.spec b/glibc.spec
index 4294b16..1012d73 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -1,6 +1,6 @@
%define glibcsrcdir glibc-2.18-788-g497b1e6
%define glibcversion 2.18.90
-%define glibcrelease 21%{?dist}
+%define glibcrelease 22%{?dist}
# Pre-release tarballs are pulled in from git using a command that is
# effectively:
#
@@ -1624,6 +1624,9 @@ rm -f *.filelist*
%endif
%changelog
+* Thu Jan 16 2014 Siddhesh Poyarekar - 2.18.90-22
+- Back out ftell test case (#1052846).
+
* Tue Jan 14 2014 Siddhesh Poyarekar - 2.18.90-21
- Sync with upstream master.
- Fix infinite loop in ftell when writing wide char data (#1052846).