/ Hex Artifact Content
Login

Artifact dd66d8f82916becf1d29b6640e4f4855485570f8:


0000: 23 20 32 30 30 36 20 4a 75 6c 79 20 32 36 0a 23  # 2006 July 26.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 0a 23 20 54 68 69 73 20 66 69 6c 65  ****.# This file
0170: 20 63 6f 6e 74 61 69 6e 73 20 61 64 64 69 74 69   contains additi
0180: 6f 6e 61 6c 20 6f 75 74 2d 6f 66 2d 6d 65 6d 6f  onal out-of-memo
0190: 72 79 20 63 68 65 63 6b 73 20 28 73 65 65 20 6d  ry checks (see m
01a0: 61 6c 6c 6f 63 2e 74 63 6c 29 0a 23 20 61 64 64  alloc.tcl).# add
01b0: 65 64 20 74 6f 20 65 78 70 6f 73 65 20 61 20 62  ed to expose a b
01c0: 75 67 20 69 6e 20 6f 75 74 2d 6f 66 2d 6d 65 6d  ug in out-of-mem
01d0: 6f 72 79 20 68 61 6e 64 6c 69 6e 67 20 66 6f 72  ory handling for
01e0: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
01f0: 31 36 28 29 2e 0a 23 0a 23 20 24 49 64 3a 20 6d  16()..#.# $Id: m
0200: 61 6c 6c 6f 63 37 2e 74 65 73 74 2c 76 20 31 2e  alloc7.test,v 1.
0210: 33 20 32 30 30 37 2f 30 38 2f 32 32 20 32 32 3a  3 2007/08/22 22:
0220: 30 34 3a 33 37 20 64 72 68 20 45 78 70 20 24 0a  04:37 drh Exp $.
0230: 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69  .set testdir [fi
0240: 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76  le dirname $argv
0250: 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64  0].source $testd
0260: 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 23  ir/tester.tcl..#
0270: 20 4f 6e 6c 79 20 72 75 6e 20 74 68 65 73 65 20   Only run these 
0280: 74 65 73 74 73 20 69 66 20 6d 65 6d 6f 72 79 20  tests if memory 
0290: 64 65 62 75 67 67 69 6e 67 20 69 73 20 74 75 72  debugging is tur
02a0: 6e 65 64 20 6f 6e 2e 0a 23 0a 69 66 63 61 70 61  ned on..#.ifcapa
02b0: 62 6c 65 20 21 6d 65 6d 64 65 62 75 67 20 7b 0a  ble !memdebug {.
02c0: 20 20 20 70 75 74 73 20 22 53 6b 69 70 70 69 6e     puts "Skippin
02d0: 67 20 6d 61 6c 6c 6f 63 20 74 65 73 74 73 3a 20  g malloc tests: 
02e0: 6e 6f 74 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  not compiled wit
02f0: 68 20 2d 44 53 51 4c 49 54 45 5f 4d 45 4d 44 45  h -DSQLITE_MEMDE
0300: 42 55 47 2e 2e 2e 22 0a 20 20 20 66 69 6e 69 73  BUG...".   finis
0310: 68 5f 74 65 73 74 0a 20 20 20 72 65 74 75 72 6e  h_test.   return
0320: 0a 7d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64  .}.source $testd
0330: 69 72 2f 6d 61 6c 6c 6f 63 5f 63 6f 6d 6d 6f 6e  ir/malloc_common
0340: 2e 74 63 6c 0a 0a 0a 64 6f 5f 6d 61 6c 6c 6f 63  .tcl...do_malloc
0350: 5f 74 65 73 74 20 6d 61 6c 6c 6f 63 37 2d 31 20  _test malloc7-1 
0360: 2d 73 71 6c 70 72 65 70 20 7b 0a 20 20 43 52 45  -sqlprep {.  CRE
0370: 41 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62  ATE TABLE t1(a,b
0380: 2c 63 2c 64 29 3b 0a 20 20 43 52 45 41 54 45 20  ,c,d);.  CREATE 
0390: 49 4e 44 45 58 20 69 31 20 4f 4e 20 74 31 28 62  INDEX i1 ON t1(b
03a0: 2c 63 29 3b 0a 7d 20 2d 74 63 6c 62 6f 64 79 20  ,c);.} -tclbody 
03b0: 7b 0a 20 20 73 65 74 20 73 71 6c 31 36 20 5b 65  {.  set sql16 [e
03c0: 6e 63 6f 64 69 6e 67 20 63 6f 6e 76 65 72 74 74  ncoding convertt
03d0: 6f 20 75 6e 69 63 6f 64 65 20 22 53 45 4c 45 43  o unicode "SELEC
03e0: 54 20 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f  T * FROM sqlite_
03f0: 6d 61 73 74 65 72 22 5d 0a 20 20 61 70 70 65 6e  master"].  appen
0400: 64 20 73 71 6c 31 36 20 22 5c 30 30 5c 30 30 22  d sql16 "\00\00"
0410: 0a 20 20 73 65 74 20 6e 62 79 74 65 20 5b 73 74  .  set nbyte [st
0420: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 73 71 6c  ring length $sql
0430: 31 36 5d 0a 20 20 73 65 74 20 3a 3a 53 54 4d 54  16].  set ::STMT
0440: 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
0450: 65 31 36 20 64 62 20 24 73 71 6c 31 36 20 24 6e  e16 db $sql16 $n
0460: 62 79 74 65 20 44 55 4d 4d 59 5d 0a 20 20 73 71  byte DUMMY].  sq
0470: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 24  lite3_finalize $
0480: 3a 3a 53 54 4d 54 0a 7d 20 0a 0a 0a 23 20 45 6e  ::STMT.} ...# En
0490: 73 75 72 65 20 74 68 61 74 20 6e 6f 20 66 69 6c  sure that no fil
04a0: 65 20 64 65 73 63 72 69 70 74 6f 72 73 20 77 65  e descriptors we
04b0: 72 65 20 6c 65 61 6b 65 64 2e 0a 64 6f 5f 74 65  re leaked..do_te
04c0: 73 74 20 6d 61 6c 6c 6f 63 2d 39 39 2e 58 20 7b  st malloc-99.X {
04d0: 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f  .  catch {db clo
04e0: 73 65 7d 0a 20 20 73 65 74 20 73 71 6c 69 74 65  se}.  set sqlite
04f0: 5f 6f 70 65 6e 5f 66 69 6c 65 5f 63 6f 75 6e 74  _open_file_count
0500: 0a 7d 20 7b 30 7d 0a 0a 70 75 74 73 20 6f 70 65  .} {0}..puts ope
0510: 6e 2d 66 69 6c 65 2d 63 6f 75 6e 74 3d 24 73 71  n-file-count=$sq
0520: 6c 69 74 65 5f 6f 70 65 6e 5f 66 69 6c 65 5f 63  lite_open_file_c
0530: 6f 75 6e 74 0a 66 69 6e 69 73 68 5f 74 65 73 74  ount.finish_test
0540: 0a                                               .