diff --git a/include/page.h b/include/page.h
index b4c86f2312087408332cd5528bc0ae6bda4cdc42..421118fd3bb00357206bc145f5a7a84f4be80af5 100644
--- a/include/page.h
+++ b/include/page.h
@@ -34,7 +34,7 @@ int isPageEmpty(log_page *page);
 
 int pagenull(log_page *page);
 
-int pagechanged(short pg);
+int pagechanged(log_page *page);
 
 int anychanged();
 
diff --git a/src/log.c b/src/log.c
index 84d0e5e063a65341aa17c8be3e2cd061b2799f34..662785dab13667ebdde8bfb2b0f831cf5aecc893 100644
--- a/src/log.c
+++ b/src/log.c
@@ -11362,7 +11362,7 @@ static void savecommand()
 		FORLIM = gg.numpages;
 		for (pgnum = 1; pgnum <= FORLIM; pgnum++)
 		{
-			if (!pagechanged(pgnum))
+			if (!pagechanged(gg.pages[pgnum - 1]))
 			{
 				sprintf(STR2, "No changes to page %d", pgnum);
 				message(STR2);
@@ -12038,7 +12038,7 @@ static void status_mem()
 			}
 			printf("%7ld     ", j);
 
-			if (pagechanged((int)(i + 1)))
+			if (pagechanged(gg.pages[i]))
 				printf("Yes    ");
 			else
 				printf("No     ");
@@ -13269,7 +13269,7 @@ static void dofunction()
 				FORLIM = gg.numpages;
 				for (i = 1; i <= FORLIM; i++)
 				{
-					if (pagechanged(i))
+					if (pagechanged(gg.pages[i - 1]))
 						printf("%d ", i);
 				}
 				putchar('\n');
diff --git a/src/page.c b/src/page.c
index 85c1bdab40d6cb1a70cc1a076723012596d728e8..f33c1a9b0a16aea7350c4cf8e84f59685e3de50e 100644
--- a/src/page.c
+++ b/src/page.c
@@ -55,9 +55,9 @@ int pagenull(log_page *page)
 	return (isPageEmpty(page) && page->pageregions == NULL);
 }
 
-int pagechanged(short pg)
+int pagechanged(log_page *page)
 {
-	return (gg.pages[pg - 1]->pagechanged && !isPageEmpty(gg.pages[pg - 1]));
+	return (page->pagechanged && !isPageEmpty(page));
 }
 
 
@@ -66,7 +66,7 @@ int anychanged()
 	size_t i;
 
 	i = 1;
-	while (i <= gg.numpages && !pagechanged((short)i))
+	while (i <= gg.numpages && !pagechanged(gg.pages[i - 1]))
 		i++;
 	return (i <= gg.numpages);
 }