OSDN Git Service

Document why we copy reloptions into CacheMemoryContext after-the-fact.
authorRobert Haas <rhaas@postgresql.org>
Thu, 7 Jan 2010 20:39:45 +0000 (20:39 +0000)
committerRobert Haas <rhaas@postgresql.org>
Thu, 7 Jan 2010 20:39:45 +0000 (20:39 +0000)
src/backend/utils/cache/relcache.c

index bb88ab5..3cb6d14 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.296 2010/01/05 01:06:56 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.297 2010/01/07 20:39:45 rhaas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -404,7 +404,12 @@ RelationParseRelOptions(Relation relation, HeapTuple tuple)
                                                                relation->rd_rel->relkind == RELKIND_INDEX ?
                                                                relation->rd_am->amoptions : InvalidOid);
 
-       /* Copy parsed data into CacheMemoryContext */
+       /*
+        * Copy parsed data into CacheMemoryContext.  To guard against the
+        * possibility of leaks in the reloptions code, we want to do the actual
+        * parsing in the caller's memory context and copy the results into
+        * CacheMemoryContext after the fact.
+        */
        if (options)
        {
                relation->rd_options = MemoryContextAlloc(CacheMemoryContext,