Age | Commit message (Collapse) | Author |
|
Problem: May try to access buffer that's already freed.
Solution: When freeing a buffer remove it from any channel.
|
|
Problem: No error when invoking a callback when it's not safe.
Solution: Add an error message. Avoid the error when freeing a channel.
|
|
Problem: Callbacks are invoked when it's not safe. (Andrew Stewart)
Solution: When a channel is to be closed don't invoke callbacks right away,
wait for a safe moment.
|
|
Problem: When job writes to buffer nothing is written. (Nicola)
Solution: Do not discard a channel before writing is done.
|
|
Problem: When a job is no longer referenced and does not have an exit
callback the process may hang around in defunc state. (Nicola)
Solution: Call job_status() if the job is running and won't get freed
because it might still be useful.
|
|
Problem: The screen is not updated if a callback is invoked when closing a
channel.
Solution: Invoke redraw_after_callback().
|
|
Problem: A channel may be garbage collected while it's still being used by
a job. (James McCoy)
Solution: Mark the channel as used if the job is still used. Do the same
for channels that are still used.
|
|
Problem: Sending DETACH after a channel was closed isn't useful.
Solution: Only add DETACH for a netbeans channel.
|
|
Problem: Test_out_close_cb sometimes fails.
Solution: Always write DETACH to out, not err.
|
|
Problem: Channel could be garbage collected too early.
Solution: Don't free a channel or remove it from a job when it is still
useful.
|
|
Problem: Cannot use ch_read() in the close callback.
Solution: Do not discard the channel if there is readahead. Do not discard
readahead if there is a close callback.
|
|
Problem: When a job ends the close callback is invoked before other
callbacks. On Windows the close callback is not called.
Solution: First invoke out/err callbacks before the close callback.
Make the close callback work on Windows.
|
|
Problem: When a buffer gets updated while in command line mode, the screen
may be messed up.
Solution: Postpone the redraw when the screen is scrolled.
|
|
Problem: Cannot detect a crash in tests when caused by garbagecollect().
Solution: Add garbagecollect_for_testing(). Do not free a job if is still
useful.
|
|
Problem: Leaking memory when there is a cycle involving a job and a
partial.
Solution: Add a copyID to job and channel. Set references in items referred
by them. Go through all jobs and channels to find unreferenced
items. Also, decrement reference counts when garbage collecting.
|
|
Problem: Leaking memory when opening a channel fails.
Solution: Unreference partials in job options.
|
|
Problem: The channel close_cb option does not work.
Solution: Use jo_close_partial instead of jo_err_partial. (Damien)
|
|
Problem: Coverity warns for not checking name length (false positive).
Solution: Only copy the characters we know are there.
|
|
Problem: When writing buffer lines to a pipe Vim may block.
Solution: Avoid blocking, write more lines later.
|
|
Problem: channel_get_all() does multiple allocations.
Solution: Compute the size and allocate once.
|
|
Problem: Win32: waiting on a pipe with fixed sleep time.
Solution: Start with a short delay and increase it when looping.
|
|
Problem: When reading JSON from a channel all readahead is used.
Solution: Use the fill function to reduce overhead.
|
|
Problem: Crash when calling job_start() with a NULL string. (Dominique)
Solution: Check for an invalid argument.
|
|
Problem: No test for an invalid Ex command on a channel.
Solution: Test handling an invalid command gracefully. Avoid getting an
error message, do write it to the channel log.
|
|
Problem: Compiler doesn't understand switch on all enum values. (Tony
Mechelynck)
Solution: Initialize variable.
|
|
Problem: 64-bit Compiler warning.
Solution: Change type of variable. (Mike Williams)
|
|
Problem: Can't get info about a channel.
Solution: Add ch_info().
|
|
Problem: All Channels share the message ID, it keeps getting bigger.
Solution: Use a message ID per channel.
|
|
Problem: Starting job with output to buffer changes options in the current
buffer.
Solution: Set "curbuf" earlier. (Yasuhiro Matsumoto)
|
|
Problem: When a JSON message is split it isn't decoded.
Solution: Wait a short time for the rest of the message to arrive.
|
|
Problem: Malformed channel request causes a hang.
Solution: Drop malformed message. (Damien)
|
|
Problem: Using channel timeout instead of request timeout. (Coverity)
Solution: Remove the extra assignment.
|
|
Problem: Missing changes in channel.c
Solution: Include the changes.
|
|
Problem: Dict options with a dash are more difficult to use.
Solution: Use an underscore, so that dict.err_io can be used.
|
|
Problem: Passing cookie to a callback is clumsy.
Solution: Change function() to take arguments and return a partial.
|
|
Problem: On Win32 escaping the command does not work properly.
Solution: Reset 'ssl' when escaping the command. (Yasuhiro Matsumoto)
|
|
Problem: Missing job_info().
Solution: Implement it.
|
|
Problem: Too much code in eval.c.
Solution: Move job and channel code to channel.c.
|
|
Problem: Too many feature flags for pipes, jobs and channels.
Solution: Only use FEAT_JOB_CHANNEL.
|
|
Problem: Cannot re-use a channel for another job.
Solution: Add the "channel" option to job_start().
|
|
Problem: Compiler warning for unitinialized variable. (Dominique Pelle)
Solution: Always give the variable a value.
|
|
Problem: Specifying buffer number for channel not implemented yet.
Solution: Implement passing a buffer number.
|
|
Problem: Channel test is flaky on MS-Windows.
Solution: Limit the select() timeout to 50 msec and try with a new socket if
it fails.
|
|
Problem: Channel test fails on BSD.
Solution: Break out of the loop when connect() succeeds. (Ozaki Kiichi)
|
|
Problem: Cannot write channel err to a buffer.
Solution: Implement it.
|
|
Problem: Compiler warning with 64bit compiler.
Solution: Add typecast. (Mike Williams)
|
|
Problem: When channel log is enabled get too many "looking for messages"
log entries.
Solution: Only give the message after another message.
|
|
Problem: Writing last-but-one line of buffer to a channel isn't implemented
yet.
Solution: Implement it. Fix leaving a swap file behind.
|
|
Problem: Crash when built with GUI but it's not active. (Dominique Pelle)
Solution: Check gui.in_use.
|
|
Problem: Wrong callback invoked for zero-id messages.
Solution: Don't use the first one-time callback when the sequence number
doesn't match.
|