View | Details | Raw Unified | Return to bug 8514
Collapse All | Expand All

(-)wm-select-0.2.orig/wm-select.c (-13 / +14 lines)
Lines 355-391 Link Here
355
355
356
	for (i = 0; i < n; ++i)
356
	for (i = 0; i < n; ++i)
357
	{
357
	{
358
		wm_entry entry;
358
		wm_entry* entry = malloc(sizeof(wm_entry));
359
		char   *fname;
359
		char   *fname;
360
360
361
		if (asprintf (&fname, "%s/%s", WM_DIR, namelist[i]->d_name) <
361
		if (asprintf (&fname, "%s/%s", WM_DIR, namelist[i]->d_name) <
362
		    0)
362
		    0)
363
			error (EXIT_FAILURE, errno, "asprintf");
363
			error (EXIT_FAILURE, errno, "asprintf");
364
		ReadWMConfig (fname, &entry);
364
		ReadWMConfig (fname, entry);
365
		if (!entry.name || !entry.icon || !entry.exec)
365
		if (!entry->name || !entry->icon || !entry->exec)
366
		{
366
		{
367
			error (EXIT_SUCCESS, 0, "%s: config incomplete",
367
			error (EXIT_SUCCESS, 0, "%s: config incomplete",
368
			       fname);
368
			       fname);
369
			free (fname);
369
			free (fname);
370
			if (entry.name)
370
			if (entry->name)
371
				free (entry.name);
371
				free (entry->name);
372
			if (entry.icon)
372
			if (entry->icon)
373
				free (entry.icon);
373
				free (entry->icon);
374
			if (entry.exec)
374
			if (entry->exec)
375
				free (entry.exec);
375
				free (entry->exec);
376
			entry.valid = 0;
376
			entry->valid = 0;
377
			memcpy (namelist[i]->d_name, (const char *) &entry,
377
			memcpy (namelist[i]->d_name, (const char *) &entry,
378
				sizeof (entry));
378
				sizeof (entry));
379
			continue;
379
			continue;
380
		}
380
		}
381
		free (fname);
381
		free (fname);
382
		entry.valid = 1;
382
		entry->valid = 1;
383
		memcpy (namelist[i]->d_name, (const char *) &entry,
383
		memcpy (namelist[i]->d_name, (const char *) &entry,
384
			sizeof (entry));
384
			sizeof (entry));
385
		++total;
385
		++total;
386
386
387
		if (!preferred)
387
		if (!preferred)
388
			preferred = entry.exec;
388
			preferred = entry->exec;
389
	}
389
	}
390
390
391
	if (total <= 6)
391
	if (total <= 6)
Lines 400-406 Link Here
400
	// error (EXIT_SUCCESS, 0, "total=%d, wrap_limit=%d", total, wrap_limit);
400
	// error (EXIT_SUCCESS, 0, "total=%d, wrap_limit=%d", total, wrap_limit);
401
	for (i = 0; i < n; ++i)
401
	for (i = 0; i < n; ++i)
402
	{
402
	{
403
		wm_entry *entry = (wm_entry *) (namelist[i]->d_name);
403
		wm_entry *entry = *((wm_entry **) (namelist[i]->d_name));
404
404
405
		if (!entry->valid)
405
		if (!entry->valid)
406
			continue;
406
			continue;
Lines 417-422 Link Here
417
			hbox = gtk_hbox_new (1, 0);
417
			hbox = gtk_hbox_new (1, 0);
418
			wrap_i = 0;
418
			wrap_i = 0;
419
		}
419
		}
420
		free(entry);
420
	}
421
	}
421
	free (namelist);
422
	free (namelist);
422
	if (wrap_i)
423
	if (wrap_i)

Return to bug 8514