summaryrefslogtreecommitdiff
path: root/storage/perfschema/pfs_engine_table.cc
diff options
context:
space:
mode:
authorMarc Alff <marc.alff@oracle.com>2013-02-28 13:19:15 +0100
committerMarc Alff <marc.alff@oracle.com>2013-02-28 13:19:15 +0100
commit99f83c66841749a3e7507cc38a86c05823f5f2c7 (patch)
tree2b9ca5e7aea1dbfc524050a3b8a9916aac1d062c /storage/perfschema/pfs_engine_table.cc
parent94b1b6533d56541787683f79ccf9b23995c3a7b3 (diff)
downloadmariadb-git-99f83c66841749a3e7507cc38a86c05823f5f2c7.tar.gz
Bug#16414644 ASSERTION FAILED: SIZE == PFS_ALLOCATED_MEMORY
Before this fix, the command SHOW ENGINE PERFORMANCE_SCHEMA STATUS could report wrong amount of memory allocated, when the amount of memory used exceeds 4GB. The problem is that size computations are not done using size_t, so that overflows do occur, truncating the results. This fix compute memory sizes properly with size_t. Tested manually. No test script provided, as the script would need to allocate too much memory for the test.
Diffstat (limited to 'storage/perfschema/pfs_engine_table.cc')
-rw-r--r--storage/perfschema/pfs_engine_table.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/storage/perfschema/pfs_engine_table.cc b/storage/perfschema/pfs_engine_table.cc
index 38f6df3003d..2c9951e3f46 100644
--- a/storage/perfschema/pfs_engine_table.cc
+++ b/storage/perfschema/pfs_engine_table.cc
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -512,7 +512,7 @@ bool pfs_show_status(handlerton *hton, THD *thd,
uint buflen;
const char *name;
int i;
- uint size;
+ size_t size;
DBUG_ENTER("pfs_show_status");
@@ -526,7 +526,7 @@ bool pfs_show_status(handlerton *hton, THD *thd,
if (stat != HA_ENGINE_STATUS)
DBUG_RETURN(false);
- uint total_memory= 0;
+ size_t total_memory= 0;
for (i=0; /* empty */; i++)
{
@@ -763,7 +763,7 @@ bool pfs_show_status(handlerton *hton, THD *thd,
break;
}
- buflen= int10_to_str(size, buf, 10) - buf;
+ buflen= longlong10_to_str(size, buf, 10) - buf;
if (print(thd,
PERFORMANCE_SCHEMA_str.str, PERFORMANCE_SCHEMA_str.length,
name, strlen(name),