* gold.cc (queue_middle_tasks): If no input files were opened,

exit.
	* workqueue.h (Task_function::Task_function): Assert that there is
	a blocker.
This commit is contained in:
Ian Lance Taylor
2010-02-23 17:42:26 +00:00
parent e707a91d99
commit 135b9c78b2
3 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
Ian Lance Taylor <iant@google.com>
* gold.cc (queue_middle_tasks): If no input files were opened,
exit.
* workqueue.h (Task_function::Task_function): Assert that there is
a blocker.
2010-02-22 Doug Kwan <dougkwan@google.com> 2010-02-22 Doug Kwan <dougkwan@google.com>
* gold-threads.h (Once::~Once): Explicitly define virtual destructor. * gold-threads.h (Once::~Once): Explicitly define virtual destructor.

View File

@ -532,6 +532,15 @@ queue_middle_tasks(const General_options& options,
} }
} }
// If we failed to open any input files, it's possible for
// THIS_BLOCKER to be NULL here. There's no real point in
// continuing if that happens.
if (this_blocker == NULL)
{
gold_assert(parameters->errors()->error_count() > 0);
gold_exit(false);
}
// When all those tasks are complete, we can start laying out the // When all those tasks are complete, we can start laying out the
// output file. // output file.
// TODO(csilvers): figure out a more principled way to get the target // TODO(csilvers): figure out a more principled way to get the target

View File

@ -152,7 +152,7 @@ class Task_function : public Task
Task_function(Task_function_runner* runner, Task_token* blocker, Task_function(Task_function_runner* runner, Task_token* blocker,
const char* name) const char* name)
: runner_(runner), blocker_(blocker), name_(name) : runner_(runner), blocker_(blocker), name_(name)
{ } { gold_assert(blocker != NULL); }
~Task_function() ~Task_function()
{ {