Back to index

lightning-sunbird  0.9+nobinonly
dbmalloc1.c
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is the Netscape Portable Runtime (NSPR).
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1998-2000
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either the GNU General Public License Version 2 or later (the "GPL"), or
00026  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 /***********************************************************************
00039 **
00040 ** Name: dbmalloc1.c (OBSOLETE)
00041 **
00042 ** Description: Tests PR_SetMallocCountdown PR_ClearMallocCountdown functions.
00043 **
00044 ** Modification History:
00045 ** 14-May-97 AGarcia- Converted the test to accomodate the debug_mode flag.
00046 **              The debug mode will print all of the printfs associated with this test.
00047 **                    The regress mode will be the default mode. Since the regress tool limits
00048 **           the output to a one line status:PASS or FAIL,all of the printf statements
00049 **                    have been handled with an if (debug_mode) statement.
00050 ** 04-June-97 AGarcia removed the Test_Result function. Regress tool has been updated to
00051 **                   recognize the return code from tha main program.
00052 **
00053 ** 12-June-97 AGarcia Revert to return code 0 and 1, remove debug option (obsolete).
00054 ***********************************************************************/
00055 
00056 
00057 /***********************************************************************
00058 ** Includes
00059 ***********************************************************************/
00060 #include <stdio.h>
00061 #include <stdlib.h>
00062 #include "nspr.h"
00063 
00064 PRIntn failed_already=0;
00065 PRIntn debug_mode;
00066 
00067 /* variable used for both r1 and r2 tests */
00068 int should_fail =0;
00069 int actually_failed=0;
00070 
00071 
00072 void
00073 r1
00074 (
00075     void
00076 )
00077 {
00078     int i;
00079        actually_failed=0;
00080     for(  i = 0; i < 5; i++ )
00081     {
00082         void *x = PR_MALLOC(128);
00083         if( (void *)0 == x ) {
00084                      if (debug_mode) printf("\tMalloc %d failed.\n", i+1);
00085                      actually_failed = 1;
00086               }
00087         PR_DELETE(x);
00088     }
00089 
00090        if (((should_fail != actually_failed) & (!debug_mode))) failed_already=1;
00091 
00092 
00093     return;
00094 }
00095 
00096 void
00097 r2
00098 (
00099     void
00100 )
00101 {
00102     int i;
00103 
00104     for( i = 0; i <= 5; i++ )
00105     {
00106               should_fail =0;
00107         if( 0 == i ) {
00108                      if (debug_mode) printf("No malloc should fail:\n");
00109               }
00110         else {
00111                      if (debug_mode) printf("Malloc %d should fail:\n", i);
00112                      should_fail = 1;
00113               }
00114         PR_SetMallocCountdown(i);
00115         r1();
00116         PR_ClearMallocCountdown();
00117     }
00118 }
00119 
00120 int
00121 main
00122 (
00123     int     argc,
00124     char   *argv[]
00125 )
00126 {
00127 
00128  /* main test */
00129        
00130     PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
00131     PR_STDIO_INIT();
00132     r2();
00133 
00134     if(failed_already)    
00135         return 1;
00136     else
00137         return 0;
00138 
00139     
00140 }
00141