Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | What I did to get the 'annotate' command not leak. Notice that I disabled again the check for blob_is_reset, as in trunk. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | annotate_noleak |
| Files: | files | file ages | folders |
| SHA1: |
7ad4dfbe8b6757e368ac4c488601649a |
| User & Date: | viriketo 2011-09-04 20:41:44.375 |
Context
|
2011-09-04
| ||
| 20:43 | Updating from trunk to get the latest code. check-in: 73b6ff4966 user: viriketo tags: annotate_noleak | |
| 20:41 | What I did to get the 'annotate' command not leak. Notice that I disabled again the check for blob_is_reset, as in trunk. check-in: 7ad4dfbe8b user: viriketo tags: annotate_noleak | |
|
2011-09-01
| ||
| 22:22 | Fix typos and other cleanup on the "build.wiki" doc page. check-in: 0f9fb20370 user: drh tags: trunk | |
Changes
Changes to src/blob.c.
| ︙ | ︙ | |||
892 893 894 895 896 897 898 |
**
** pOut must be either uninitialized or the same as pIn.
*/
int blob_uncompress(Blob *pIn, Blob *pOut){
unsigned int nOut;
unsigned char *inBuf;
unsigned int nIn = blob_size(pIn);
| | | 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 |
**
** pOut must be either uninitialized or the same as pIn.
*/
int blob_uncompress(Blob *pIn, Blob *pOut){
unsigned int nOut;
unsigned char *inBuf;
unsigned int nIn = blob_size(pIn);
Blob temp = empty_blob;
int rc;
unsigned long int nOut2;
if( nIn<=4 ){
return 0;
}
inBuf = (unsigned char*)blob_buffer(pIn);
nOut = (inBuf[0]<<24) + (inBuf[1]<<16) + (inBuf[2]<<8) + inBuf[3];
|
| ︙ | ︙ |
Changes to src/content.c.
| ︙ | ︙ | |||
93 94 95 96 97 98 99 |
contentCache.nAlloc*sizeof(contentCache.a[0]));
}
p = &contentCache.a[contentCache.n++];
p->rid = rid;
p->age = contentCache.nextAge++;
contentCache.szTotal += blob_size(pBlob);
p->content = *pBlob;
| | | 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
contentCache.nAlloc*sizeof(contentCache.a[0]));
}
p = &contentCache.a[contentCache.n++];
p->rid = rid;
p->age = contentCache.nextAge++;
contentCache.szTotal += blob_size(pBlob);
p->content = *pBlob;
blob_reset(pBlob);
bag_insert(&contentCache.inCache, rid);
}
/*
** Clear the content cache.
*/
void content_clear_cache(void){
|
| ︙ | ︙ | |||
257 258 259 260 261 262 263 |
if( nextRid==0 ){
rc = content_of_blob(rid, pBlob);
}else{
int n = 1;
int nAlloc = 10;
int *a = 0;
int mx;
| | | 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 |
if( nextRid==0 ){
rc = content_of_blob(rid, pBlob);
}else{
int n = 1;
int nAlloc = 10;
int *a = 0;
int mx;
Blob delta = empty_blob, next = empty_blob;
a = fossil_malloc( sizeof(a[0])*nAlloc );
a[0] = rid;
a[1] = nextRid;
n = 1;
while( !bag_find(&contentCache.inCache, nextRid)
&& (nextRid = findSrcid(nextRid))>0 ){
|
| ︙ | ︙ |
Changes to src/db.c.
| ︙ | ︙ | |||
209 210 211 212 213 214 215 |
** Prepare a Stmt. Assume that the Stmt is previously uninitialized.
** If the input string contains multiple SQL statements, only the first
** one is processed. All statements beyond the first are silently ignored.
*/
int db_vprepare(Stmt *pStmt, int errOk, const char *zFormat, va_list ap){
int rc;
char *zSql;
| | | 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
** Prepare a Stmt. Assume that the Stmt is previously uninitialized.
** If the input string contains multiple SQL statements, only the first
** one is processed. All statements beyond the first are silently ignored.
*/
int db_vprepare(Stmt *pStmt, int errOk, const char *zFormat, va_list ap){
int rc;
char *zSql;
pStmt->sql = empty_blob;
blob_vappendf(&pStmt->sql, zFormat, ap);
va_end(ap);
zSql = blob_str(&pStmt->sql);
nPrepare++;
rc = sqlite3_prepare_v2(g.db, zSql, -1, &pStmt->pStmt, 0);
if( rc!=0 && !errOk ){
db_err("%s\n%s", sqlite3_errmsg(g.db), zSql);
|
| ︙ | ︙ |
Changes to src/deltacmd.c.
| ︙ | ︙ | |||
75 76 77 78 79 80 81 |
**
** It works ok for pTarget and pOriginal to be the same blob.
**
** Return the length of the target. Return -1 if there is an error.
*/
int blob_delta_apply(Blob *pOriginal, Blob *pDelta, Blob *pTarget){
int len, n;
| | | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
**
** It works ok for pTarget and pOriginal to be the same blob.
**
** Return the length of the target. Return -1 if there is an error.
*/
int blob_delta_apply(Blob *pOriginal, Blob *pDelta, Blob *pTarget){
int len, n;
Blob out = empty_blob;
n = delta_output_size(blob_buffer(pDelta), blob_size(pDelta));
blob_zero(&out);
if( n<0 ) return -1;
blob_resize(&out, n);
len = delta_apply(
blob_buffer(pOriginal), blob_size(pOriginal),
|
| ︙ | ︙ |
Changes to src/diff.c.
| ︙ | ︙ | |||
709 710 711 712 713 714 715 | free(p->c.aEdit); p->c.aEdit = 0; p->c.nEdit = 0; p->c.nEditAlloc = 0; /* Clear out the from file */ free(p->c.aFrom); | | | 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 | free(p->c.aEdit); p->c.aEdit = 0; p->c.nEdit = 0; p->c.nEditAlloc = 0; /* Clear out the from file */ free(p->c.aFrom); blob_reset(pParent); /* Return no errors */ return 0; } /* |
| ︙ | ︙ | |||
761 762 763 764 765 766 767 |
Annotator *p, /* The annotator */
int fnid, /* The name of the file to be annotated */
int mid, /* Use the version of the file in this check-in */
int webLabel, /* Use web-style annotations if true */
int iLimit, /* Limit the number of levels if greater than zero */
int annFlags /* Flags to alter the annotation */
){
| | | | 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 |
Annotator *p, /* The annotator */
int fnid, /* The name of the file to be annotated */
int mid, /* Use the version of the file in this check-in */
int webLabel, /* Use web-style annotations if true */
int iLimit, /* Limit the number of levels if greater than zero */
int annFlags /* Flags to alter the annotation */
){
Blob toAnnotate = empty_blob; /* Text of the final (mid) version of the file */
Blob step = empty_blob; /* Text of previous revision */
int rid; /* Artifact ID of the file being annotated */
char *zLabel; /* Label to apply to a line */
Stmt q; /* Query returning all ancestor versions */
/* Initialize the annotation */
rid = db_int(0, "SELECT fid FROM mlink WHERE mid=%d AND fnid=%d",mid,fnid);
if( rid==0 ){
|
| ︙ | ︙ | |||
883 884 885 886 887 888 889 |
** --log List all versions analyzed
** --filevers Show file version numbers rather than check-in versions
*/
void annotate_cmd(void){
int fnid; /* Filename ID */
int fid; /* File instance ID */
int mid; /* Manifest where file was checked in */
| | | 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 |
** --log List all versions analyzed
** --filevers Show file version numbers rather than check-in versions
*/
void annotate_cmd(void){
int fnid; /* Filename ID */
int fid; /* File instance ID */
int mid; /* Manifest where file was checked in */
Blob treename = empty_blob; /* FILENAME translated to canonical form */
char *zFilename; /* Cannonical filename */
Annotator ann; /* The annotation of the file */
int i; /* Loop counter */
const char *zLimit; /* The value to the --limit option */
int iLimit; /* How far back in time to look */
int showLog; /* True to show the log */
int fileVers; /* Show file version instead of check-in versions */
|
| ︙ | ︙ |
Changes to src/file.c.
| ︙ | ︙ | |||
704 705 706 707 708 709 710 |
** message and quit if the errFatal flag is true. If errFatal is
** false, then simply return 0.
**
** The root of the tree is defined by the g.zLocalRoot variable.
*/
int file_tree_name(const char *zOrigName, Blob *pOut, int errFatal){
int n;
| | | 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 |
** message and quit if the errFatal flag is true. If errFatal is
** false, then simply return 0.
**
** The root of the tree is defined by the g.zLocalRoot variable.
*/
int file_tree_name(const char *zOrigName, Blob *pOut, int errFatal){
int n;
Blob full = empty_blob;
int nFull;
char *zFull;
blob_zero(pOut);
db_must_be_within_tree();
file_canonical_name(zOrigName, &full);
n = strlen(g.zLocalRoot);
|
| ︙ | ︙ |