Tcl Source Code

Check-in [10e9bd8b12]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:fixes segfault [7a9dc52b29]: unexpected decrement of the ref-count after TclJoinPath
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | bug-7a9dc52b29
Files: files | file ages | folders
SHA3-256: 10e9bd8b12f82095d1cd024ae6c83401a16923af568b6f40addea4e7d4b5273c
User & Date: sebres 2018-11-20 18:02:32
References
2018-11-20
18:15 Ticket [7a9dc52b29] tclsh crashes with tilde chars in filenames status still Open with 4 other changes artifact: 6f8d56e8c0 user: sebres
Context
2018-11-20
20:11
refactoring normalize in case of second path starting with tilde (~/~foo) - force second path as rel... check-in: 945ecdbfcd user: sebres tags: bug-7a9dc52b29
18:02
fixes segfault [7a9dc52b29]: unexpected decrement of the ref-count after TclJoinPath check-in: 10e9bd8b12 user: sebres tags: bug-7a9dc52b29
2018-11-12
09:26
Fix brokenness in GNUmakefile check-in: 38bd0e8890 user: dkf tags: core-8-5-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/tclPathObj.c.

2511
2512
2513
2514
2515
2516
2517

2518


2519

2520
2521
2522
2523
2524
2525
2526
		TclDecrRefCount(parts);
	    } else {
		Tcl_Obj *pair[2];

		pair[0] = transPtr;
		pair[1] = Tcl_NewStringObj(name+split+1, -1);
		transPtr = TclJoinPath(2, pair);

		TclDecrRefCount(pair[0]);


		TclDecrRefCount(pair[1]);

	    }
	}
	Tcl_DStringFree(&temp);
    } else {
	transPtr = TclJoinPath(1, &pathPtr);
    }







>
|
>
>
|
>







2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
		TclDecrRefCount(parts);
	    } else {
		Tcl_Obj *pair[2];

		pair[0] = transPtr;
		pair[1] = Tcl_NewStringObj(name+split+1, -1);
		transPtr = TclJoinPath(2, pair);
		if (transPtr != pair[0]) {
		    TclDecrRefCount(pair[0]);
		}
		if (transPtr != pair[1]) {
		    TclDecrRefCount(pair[1]);
		}
	    }
	}
	Tcl_DStringFree(&temp);
    } else {
	transPtr = TclJoinPath(1, &pathPtr);
    }