Fossil SCM

Resolve memory leaks in the SVN import which can cause large imports to hit OOM, reported in [forum:bb19df2426679bfc|forum thread bb19df2426679bfc].

stephan 2024-06-03 06:46 trunk
Commit 93266c5151d769c1ceb8b83419009bef7eecc47dbe68b5f377acd616dbf3903c
1 file changed +4
--- src/import.c
+++ src/import.c
@@ -1584,10 +1584,12 @@
15841584
}else{
15851585
blob_zero(&deltaSrc);
15861586
}
15871587
svn_apply_svndiff(&rec.content, &deltaSrc, &target);
15881588
rid = svn_handle_symlinks(zPerm, &target);
1589
+ blob_reset(&deltaSrc);
1590
+ blob_reset(&target);
15891591
}else if( rec.contentFlag ){
15901592
rid = svn_handle_symlinks(zPerm, &rec.content);
15911593
}else if( zSrcPath ){
15921594
if ( zPerm==0 ){
15931595
zPerm = db_text(0, "SELECT tperm FROM xfiles"
@@ -1626,10 +1628,12 @@
16261628
" WHERE tpath=%Q AND tbranch=%d"
16271629
")", zFile, branchId);
16281630
content_get(rid, &deltaSrc);
16291631
svn_apply_svndiff(&rec.content, &deltaSrc, &target);
16301632
rid = svn_handle_symlinks(zPerm, &target);
1633
+ blob_reset(&deltaSrc);
1634
+ blob_reset(&target);
16311635
}else{
16321636
rid = svn_handle_symlinks(zPerm, &rec.content);
16331637
}
16341638
db_bind_text(&addFile, ":path", zFile);
16351639
db_bind_int(&addFile, ":branch", branchId);
16361640
--- src/import.c
+++ src/import.c
@@ -1584,10 +1584,12 @@
1584 }else{
1585 blob_zero(&deltaSrc);
1586 }
1587 svn_apply_svndiff(&rec.content, &deltaSrc, &target);
1588 rid = svn_handle_symlinks(zPerm, &target);
 
 
1589 }else if( rec.contentFlag ){
1590 rid = svn_handle_symlinks(zPerm, &rec.content);
1591 }else if( zSrcPath ){
1592 if ( zPerm==0 ){
1593 zPerm = db_text(0, "SELECT tperm FROM xfiles"
@@ -1626,10 +1628,12 @@
1626 " WHERE tpath=%Q AND tbranch=%d"
1627 ")", zFile, branchId);
1628 content_get(rid, &deltaSrc);
1629 svn_apply_svndiff(&rec.content, &deltaSrc, &target);
1630 rid = svn_handle_symlinks(zPerm, &target);
 
 
1631 }else{
1632 rid = svn_handle_symlinks(zPerm, &rec.content);
1633 }
1634 db_bind_text(&addFile, ":path", zFile);
1635 db_bind_int(&addFile, ":branch", branchId);
1636
--- src/import.c
+++ src/import.c
@@ -1584,10 +1584,12 @@
1584 }else{
1585 blob_zero(&deltaSrc);
1586 }
1587 svn_apply_svndiff(&rec.content, &deltaSrc, &target);
1588 rid = svn_handle_symlinks(zPerm, &target);
1589 blob_reset(&deltaSrc);
1590 blob_reset(&target);
1591 }else if( rec.contentFlag ){
1592 rid = svn_handle_symlinks(zPerm, &rec.content);
1593 }else if( zSrcPath ){
1594 if ( zPerm==0 ){
1595 zPerm = db_text(0, "SELECT tperm FROM xfiles"
@@ -1626,10 +1628,12 @@
1628 " WHERE tpath=%Q AND tbranch=%d"
1629 ")", zFile, branchId);
1630 content_get(rid, &deltaSrc);
1631 svn_apply_svndiff(&rec.content, &deltaSrc, &target);
1632 rid = svn_handle_symlinks(zPerm, &target);
1633 blob_reset(&deltaSrc);
1634 blob_reset(&target);
1635 }else{
1636 rid = svn_handle_symlinks(zPerm, &rec.content);
1637 }
1638 db_bind_text(&addFile, ":path", zFile);
1639 db_bind_int(&addFile, ":branch", branchId);
1640

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button