You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2020/10/20 20:10:14 UTC
[wicket] 02/02: WICKET-6845 stackoverflow while serializing a page
containing a reference to session
This is an automated email from the ASF dual-hosted git repository.
mgrigorov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git
commit d929d852e75567e32a2864674b821900c4929eed
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Tue Oct 20 23:08:19 2020 +0300
WICKET-6845 stackoverflow while serializing a page containing a reference to session
Remove the page from InSessionPageStore#pages before trying to serialize it to prevent stackoverflow when the page keeps a reference to the Wicket Session.
---
.../main/java/org/apache/wicket/pageStore/InSessionPageStore.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/wicket-core/src/main/java/org/apache/wicket/pageStore/InSessionPageStore.java b/wicket-core/src/main/java/org/apache/wicket/pageStore/InSessionPageStore.java
index a1beb4d..87cb701 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/InSessionPageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/InSessionPageStore.java
@@ -278,15 +278,16 @@ public class InSessionPageStore implements IPageStore
if ((page instanceof SerializedPage) == false)
{
+ pages.remove(p);
if (serializer == null)
{
- pages.remove(p);
p--;
}
else
{
- pages.set(p, new SerializedPage(page.getPageId(),
- Classes.name(page.getClass()), serializer.serialize(page)));
+ byte[] bytes = serializer.serialize(page);
+ SerializedPage serializedPage = new SerializedPage(page.getPageId(), Classes.name(page.getClass()), bytes);
+ pages.add(p, serializedPage);
}
}
}