Fossil SCM
One more place where failing run_common_script() should not prevent running manifest_crosslink(). If run_common_script() fails, let the following run_script() output its error-message.
Commit
cc5466b8d446ff5eed6e8c16c361b4846e6808d1
Parent
abef3f19572202d…
2 files changed
+2
-1
+11
-3
+2
-1
| --- src/branch.c | ||
| +++ src/branch.c | ||
| @@ -153,11 +153,12 @@ | ||
| 153 | 153 | brid = content_put_ex(&branch, 0, 0, 0, isPrivate); |
| 154 | 154 | if( brid==0 ){ |
| 155 | 155 | fossil_fatal("trouble committing manifest: %s", g.zErrMsg); |
| 156 | 156 | } |
| 157 | 157 | db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", brid); |
| 158 | - if( run_common_script() || manifest_crosslink(brid, &branch)==0 ){ | |
| 158 | + run_common_script(); | |
| 159 | + if( manifest_crosslink(brid, &branch)==0 ){ | |
| 159 | 160 | fossil_fatal("%s\n", g.zErrMsg); |
| 160 | 161 | } |
| 161 | 162 | assert( blob_is_reset(&branch) ); |
| 162 | 163 | content_deltify(rootid, brid, 0); |
| 163 | 164 | zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", brid); |
| 164 | 165 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -153,11 +153,12 @@ | |
| 153 | brid = content_put_ex(&branch, 0, 0, 0, isPrivate); |
| 154 | if( brid==0 ){ |
| 155 | fossil_fatal("trouble committing manifest: %s", g.zErrMsg); |
| 156 | } |
| 157 | db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", brid); |
| 158 | if( run_common_script() || manifest_crosslink(brid, &branch)==0 ){ |
| 159 | fossil_fatal("%s\n", g.zErrMsg); |
| 160 | } |
| 161 | assert( blob_is_reset(&branch) ); |
| 162 | content_deltify(rootid, brid, 0); |
| 163 | zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", brid); |
| 164 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -153,11 +153,12 @@ | |
| 153 | brid = content_put_ex(&branch, 0, 0, 0, isPrivate); |
| 154 | if( brid==0 ){ |
| 155 | fossil_fatal("trouble committing manifest: %s", g.zErrMsg); |
| 156 | } |
| 157 | db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", brid); |
| 158 | run_common_script(); |
| 159 | if( manifest_crosslink(brid, &branch)==0 ){ |
| 160 | fossil_fatal("%s\n", g.zErrMsg); |
| 161 | } |
| 162 | assert( blob_is_reset(&branch) ); |
| 163 | content_deltify(rootid, brid, 0); |
| 164 | zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", brid); |
| 165 |
+11
-3
| --- src/xfer.c | ||
| +++ src/xfer.c | ||
| @@ -918,14 +918,18 @@ | ||
| 918 | 918 | int run_script(const char *zScript, const char *zUuid){ |
| 919 | 919 | int result = 0; |
| 920 | 920 | if( !commonScriptRan || !zScript || !(zScript = db_get(zScript, 0))){ |
| 921 | 921 | return 0; /* No script or common script didn't run, return success. */ |
| 922 | 922 | } |
| 923 | - if( zUuid ){ | |
| 924 | - Th_SetVar(g.interp, "uuid", -1, zUuid, strlen(zUuid)); | |
| 923 | + if( commonScriptRan == 1 ){ | |
| 924 | + if( zUuid ){ | |
| 925 | + Th_SetVar(g.interp, "uuid", -1, zUuid, strlen(zUuid)); | |
| 926 | + } | |
| 927 | + result = Th_Eval(g.interp, 0, zScript, -1) != TH_OK; | |
| 928 | + }else{ | |
| 929 | + result = TH_ERROR; | |
| 925 | 930 | } |
| 926 | - result = Th_Eval(g.interp, 0, zScript, -1) != TH_OK; | |
| 927 | 931 | if (result) fossil_error(1, "%s", Th_GetResult(g.interp, 0)); |
| 928 | 932 | return result; |
| 929 | 933 | } |
| 930 | 934 | |
| 931 | 935 | /* |
| @@ -936,10 +940,14 @@ | ||
| 936 | 940 | int result = 0; |
| 937 | 941 | if( !commonScriptRan ){ |
| 938 | 942 | Th_FossilInit(TH_INIT_DEFAULT); /* Make sure TH1 is ready. */ |
| 939 | 943 | commonScriptRan = 1; /* enable run_script to do something */ |
| 940 | 944 | result = run_script("xfer-common-script", 0); |
| 945 | + if( result == TH_ERROR ){ | |
| 946 | + /* Error message is left in th interpreter. */ | |
| 947 | + commonScriptRan = 2; | |
| 948 | + } | |
| 941 | 949 | Th_CreateCommand(g.interp, "http", httpCmd, 0, 0); |
| 942 | 950 | } |
| 943 | 951 | return result; |
| 944 | 952 | } |
| 945 | 953 | |
| 946 | 954 |
| --- src/xfer.c | |
| +++ src/xfer.c | |
| @@ -918,14 +918,18 @@ | |
| 918 | int run_script(const char *zScript, const char *zUuid){ |
| 919 | int result = 0; |
| 920 | if( !commonScriptRan || !zScript || !(zScript = db_get(zScript, 0))){ |
| 921 | return 0; /* No script or common script didn't run, return success. */ |
| 922 | } |
| 923 | if( zUuid ){ |
| 924 | Th_SetVar(g.interp, "uuid", -1, zUuid, strlen(zUuid)); |
| 925 | } |
| 926 | result = Th_Eval(g.interp, 0, zScript, -1) != TH_OK; |
| 927 | if (result) fossil_error(1, "%s", Th_GetResult(g.interp, 0)); |
| 928 | return result; |
| 929 | } |
| 930 | |
| 931 | /* |
| @@ -936,10 +940,14 @@ | |
| 936 | int result = 0; |
| 937 | if( !commonScriptRan ){ |
| 938 | Th_FossilInit(TH_INIT_DEFAULT); /* Make sure TH1 is ready. */ |
| 939 | commonScriptRan = 1; /* enable run_script to do something */ |
| 940 | result = run_script("xfer-common-script", 0); |
| 941 | Th_CreateCommand(g.interp, "http", httpCmd, 0, 0); |
| 942 | } |
| 943 | return result; |
| 944 | } |
| 945 | |
| 946 |
| --- src/xfer.c | |
| +++ src/xfer.c | |
| @@ -918,14 +918,18 @@ | |
| 918 | int run_script(const char *zScript, const char *zUuid){ |
| 919 | int result = 0; |
| 920 | if( !commonScriptRan || !zScript || !(zScript = db_get(zScript, 0))){ |
| 921 | return 0; /* No script or common script didn't run, return success. */ |
| 922 | } |
| 923 | if( commonScriptRan == 1 ){ |
| 924 | if( zUuid ){ |
| 925 | Th_SetVar(g.interp, "uuid", -1, zUuid, strlen(zUuid)); |
| 926 | } |
| 927 | result = Th_Eval(g.interp, 0, zScript, -1) != TH_OK; |
| 928 | }else{ |
| 929 | result = TH_ERROR; |
| 930 | } |
| 931 | if (result) fossil_error(1, "%s", Th_GetResult(g.interp, 0)); |
| 932 | return result; |
| 933 | } |
| 934 | |
| 935 | /* |
| @@ -936,10 +940,14 @@ | |
| 940 | int result = 0; |
| 941 | if( !commonScriptRan ){ |
| 942 | Th_FossilInit(TH_INIT_DEFAULT); /* Make sure TH1 is ready. */ |
| 943 | commonScriptRan = 1; /* enable run_script to do something */ |
| 944 | result = run_script("xfer-common-script", 0); |
| 945 | if( result == TH_ERROR ){ |
| 946 | /* Error message is left in th interpreter. */ |
| 947 | commonScriptRan = 2; |
| 948 | } |
| 949 | Th_CreateCommand(g.interp, "http", httpCmd, 0, 0); |
| 950 | } |
| 951 | return result; |
| 952 | } |
| 953 | |
| 954 |